我有一个Enum定义,它包含方法返回类型,如“String”,Float,List,Double等。
我将在switch case语句中使用它。 例如,我的枚举是
public enum MethodType {
DOUBLE,LIST,STRING,ARRAYLIST,FLOAT,LONG;
}
在属性文件中,我有如下键值对。 测试1 =字符串 TEST2 =双
在我的代码中,我获得了密钥的值。我需要在Switch Case中使用VALUE来确定类型,并基于此我要实现一些逻辑。 比如像这样的东西
switch(MethodType.DOUBLE){
case DOUBLE:
//Dobule logic
}
有人可以帮我实现吗?
答案 0 :(得分:21)
我想这就是你要找的东西:
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() )
。
答案 1 :(得分:6)
这可能会更接近您的需求。在这种情况下,您可以将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);
}
}
答案 2 :(得分:5)
您已定义枚举,但您需要定义 该类型的变量。像这样:
public enum MethodType { ... }
public MethodType myMethod;
switch (myMethod)
{
case MethodType.DOUBLE:
//...
break;
case MethodType.LIST:
//...
break;
//...
}
修改强>
以前,此代码段使用var
作为变量名称,但这是一个保留关键字。已更改为myMethod
。
答案 3 :(得分:3)
你根本不需要一个开关(这在java btw中,所以可能不适合你):显然你会想要添加一些空检查,更好的异常处理等。
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");
}
}