我使用以下代码,我想知道是否有办法用switch, 因为类型名称是类型字符串,所以我不使用它作为默认值。(我知道1.7版本支持此选项,但我需要使用1.6) 有办法克服这个问题吗?
public static SwitchInputType<?> switchInput(String typeName) {
if (typeName.equals("Binary")) {
return new SwitchInputType<Byte>(new Byte("23ABFF"));
}
else if (typeName.equals("Decimal")) {
return new SwitchInputType<BigDecimal>(new BigDecimal("A"));
}
else if (typeName.equals("Boolean")) {
return new SwitchInputType<Boolean>(new Boolean("true"));
答案 0 :(得分:3)
如其他答案中所述,如果您使用的是Java 1.6,则不能将switch语句与字符串一起使用。
最好的办法是使用枚举器而不是字符串值:
public static SwitchInputType<?> switchInput(InputType type) {
switch(type){
BINARY:
return new SwitchInputType<Byte>(new Byte("23ABFF"));
DECIMAL:
return new SwitchInputType<BigDecimal>(new BigDecimal("A"));
BOOLEAN:
return new SwitchInputType<Boolean>(new Boolean("true"));
}
}
其中:
public enum InputType{
BINARY, DECIMAL, BOOLEAN // etc.
}
<强>更新强>
在Field
课程中添加InputType fieldType
属性。然后在循环内:
MemberTypeRouting.switchInput(field.getFieldType());
答案 1 :(得分:2)
只有Java 7支持使用字符串的开关。遗憾的是旧版本不支持它,所以你不能使用Java 6,并且你必须使用你已经使用的if / else语句。< / p>
另见几年前问过这个问题: Why can't I switch on a String?