function checkValue(value) {
if (value === null || value === undefined || value === '') {
return '-';
} else {
switch (value) {
case true:
return 'Yes';
break;
case false:
return 'No';
break;
default:
return value;
break;
}
}
}
我知道按字符串开关的情况只有> 1.7。无论如何,我可以在不使用传统if/else
的情况下在java中转换这段代码。这段代码用JavaScript
编写。
答案 0 :(得分:6)
使用enum代替< 1.7切换字符串不支持
private enum MyEnum {
a, b, c, d;
}
String val; // input
MyEnum mye = MyEnum.valueOf(val);
switch (mye) {
case a:
return something;
case carrot:
return something;
..
}
P.S:伪代码。 IDE不在手.Sorry。
答案 1 :(得分:1)
您可以像这样使用Enum:
enum MyEnum {
A1, A2, A3;
}
String val = "myVal"; // your input
MyEnum enumVal;
try {
enumVal = MyEnum(val);
} catch (IllegalArgumentException iae) {
enumVal = null;
}
switch (enumVal) {
case A1:
doSomething();
break;
case A2:
doOtherStuff();
break;
default:
doDefault();
break;
}
如果您认为try块过于丑陋,可以使用EnumUtils中的apache commons lang,那将为您完成这些操作,您只需要更改:
MyEnum enumVal;
try {
enumVal = MyEnum(val);
} catch (IllegalArgumentException iae) {
enumVal = null;
}
用这个:
MyEnum enumVal = EnumUtils.getEnum(MyEnum.class, val);
修改强>
对于您想要过滤非字符串的布尔值的情况,您可以执行以下操作:
Object input = "MyString";
if (input == Boolean.TRUE) {
return "Yes";
} else if (input == Boolean.FALSE) {
return "No";
} else {
return input;
}
如果它们是字符串,则需要比较字符串本身,如:
if ("true".equals(input)) {
return "Yes";
} else if ("false".equals(input)) {
return "No";
} else {
return input;
}