Switch with string in Java1.6
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Switch Statement with Strings in Java
我在使用下面的代码,我想知道是否有一种方法可以用开关来完成它,因为类型名是类型字符串,所以我不将其用作默认值。(我知道1.7版本支持此选项,但我需要使用1.6)有办法克服这个问题吗?
1 2 3 4 5 6 7 8 9 10 | 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,则不能使用带有字符串的开关语句。
最好的做法是使用枚举器而不是字符串值:
1 2 3 4 5 6 7 8 9 10 | 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")); } } |
在哪里?
1 2 3 | public enum InputType{ BINARY, DECIMAL, BOOLEAN // etc. } |
更新:
在您的
1 | MemberTypeRouting.switchInput(field.getFieldType()); |
只有Java 7才支持使用字符串的开关。遗憾的是,它在旧版本中不被支持,所以不能用Java 6来使用它,而必须继续使用已经使用的I/OR语句。
另请看几年前问的这个问题:为什么我不能打开一根绳子?