Мне определили Перечисление, которое содержит тип возврата метода как "Строка", Плавание, Список, дважды и т.д.
Я буду использовать его в операторах case оператора switch. Например, мое перечисление
public enum MethodType {
DOUBLE,LIST,STRING,ARRAYLIST,FLOAT,LONG;
}
В файле свойств у меня есть пары значения ключа следующим образом. Test1=String Test2=Double
В моем коде я получаю значение для ключа. Я должен использовать ЗНАЧЕНИЕ в Случае Переключателя для Определения Типа, и на основе этого я должен реализовать некоторую логику. Например, что-то вроде этого
switch(MethodType.DOUBLE){
case DOUBLE:
//Dobule logic
}
Кто-то может помочь мне реализовать это?
Думаю, это то, что вы ищете:
public class C_EnumTest {
public enum MethodType {
DOUBLE,LIST,STRING,ARRAYLIST,FLOAT,LONG;
}
public static void main( String[] args ) {
String value = "DOUBLE";
switch( MethodType.valueOf( value ) ) {
case DOUBLE:
System.out.println( "It's a double" );
break;
case LIST:
System.out.println( "It's a list" );
break;
}
}
}
Чтобы не учитывать регистр, вы можете использовать MethodType.valueOf (value.toUpperCase ())
.
Вы определили перечисление, но вам нужно определить переменную, которая является этим типом. Например, так:
public enum MethodType { ... }
public MethodType myMethod;
switch (myMethod)
{
case MethodType.DOUBLE:
//...
break;
case MethodType.LIST:
//...
break;
//...
}
Edit:
Ранее в этом фрагменте в качестве имени переменной использовалось var
, но это зарезервированное ключевое слово. Изменено на myMethod
.
Это может быть немного ближе к тому, что вам нужно. В этом случае вы можете сделать свойство propertyName чем угодно:
public enum MethodType {
STRING("String"),
LONG("Long"),
DOUBLE("Double"),
THING("Thing");
private String propertyName;
MethodType(String propName) {
this.propertyName = propName;
}
public String getPropertyName() {
return propertyName;
}
static MethodType fromPropertyName(String x) throws Exception {
for (MethodType currentType : MethodType.values()) {
if (x.equals(currentType.getPropertyName())) {
return currentType;
}
}
throw new Exception("Unmatched Type: " + x);
}
}
Вам вообще не нужен переключатель (он есть в java, кстати, может не сработать для вас): очевидно, вы захотите добавить несколько нулевых проверок, улучшенную обработку исключений и т. Д.
public enum MethodType {
String,LONG,DOUBLE,THING;
static MethodType fromString(String x) throws Exception {
for (MethodType currentType: MethodType.values()){
if (x.equals(currentType.toString())){
return currentType;
}
}
throw new Exception("Unmatched Type");
}
}