在Java1.6中用字符串切换
可能重复:
在Java中使用字符串切换语句
我使用下面的代码,我不知道是否有办法做到这一点与开关,我不使用它作为默认的原因,因为类型名称是类型字符串。(我知道这个选项是支持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"));
正如其他答案中所解释的,如果您正在使用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());
只有Java 7以后才支持带字符串的交换机。不幸的是它在旧版本中不支持,所以你不能用Java 6来使用它,你必须留下你已经使用的if / else语句。
另请参阅这个问题,几年前问:为什么我不能打开一个字符串?
链接地址: http://www.djcxy.com/p/84509.html