Ответ 1
Вы должны заменить свой getEnumNameForValue
на вызов метода name()
.
Как получить имя типа Java Enum с учетом его значения?
Я написал код, который работает для определенного типа Enum, могу ли я сделать его более общим?
Тип перечисления:
public enum Category {
APPLE("3"),
ORANGE("1"),
GRAPE("GRAPE"),
BANANA("Banana");
private final String identifier;
/**
* Constructor.
*
* @param identifier
* - identfier.
*/
private Category(String identifier) {
this.identifier = identifier;
}
/**
* {@inheritDoc}
*/
public String toString() {
return identifier;
}
public static String getEnumNameForValue(Object value){
Category[] values = Category.values();
String enumValue = null;
for(Category eachValue : values) {
enumValue =eachValue.toString();
if (enumValue.equals(value)) {
return eachValue.name();
}
}
return enumValue;
}
}
Вы должны заменить свой getEnumNameForValue
на вызов метода name()
.
Попробуйте ввести код
public enum SalaryHeadMasterEnum {
BASIC_PAY("basic pay"),
MEDICAL_ALLOWANCE("Medical Allowance");
private String name;
private SalaryHeadMasterEnum(String stringVal) {
name=stringVal;
}
public String toString(){
return name;
}
public static String getEnumByString(String code){
for(SalaryHeadMasterEnum e : SalaryHeadMasterEnum.values()){
if(code == e.name) return e.name();
}
return null;
}
}
Теперь вы можете использовать нижеприведенный код для получения значения Enum by Value
SalaryHeadMasterEnum.getEnumByString("Basic Pay")
Используйте код ниже, чтобы получить ENUM как строку
SalaryHeadMasterEnum.BASIC_PAY.name()
Используйте код ниже, чтобы получить строку Значение для перечисления
SalaryHeadMasterEnum.BASIC_PAY.toString()
Попробуйте следующий код..
@Override
public String toString() {
return this.name();
}
Вот приведенный ниже код, он вернет имя Enum из значения Enum.
public enum Test {
PLUS("Plus One"), MINUS("MinusTwo"), TIMES("MultiplyByFour"), DIVIDE(
"DivideByZero");
private String operationName;
private Test(final String operationName) {
setOperationName(operationName);
}
public String getOperationName() {
return operationName;
}
public void setOperationName(final String operationName) {
this.operationName = operationName;
}
public static Test getOperationName(final String operationName) {
for (Test oprname : Test.values()) {
if (operationName.equals(oprname.toString())) {
return oprname;
}
}
return null;
}
@Override
public String toString() {
return operationName;
}
}
public class Main {
public static void main(String[] args) {
Test test = Test.getOperationName("Plus One");
switch (test) {
case PLUS:
System.out.println("Plus.....");
break;
case MINUS:
System.out.println("Minus.....");
break;
default:
System.out.println("Nothing..");
break;
}
}
}