switch for type string for java 1.6
本问题已经有最佳答案,请猛点这里访问。
我有以下代码,我想知道是否有一种方法可以使用开关块而不是一堆if/else语句。我知道Java支持Java 1.7中的开关块中的字符串,但我仍然在使用Java 1.6:
1 2 3 4 5 6 7 8 9 |
你甚至可以让EDOCX1[1]为你做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public static void main(String[] args) throws InterruptedException { String typeName ="Boolean"; String memberValue ="memberValue"; SwitchInputType type = Type.valueOf(typeName).makeType(memberValue); } enum Type { Boolean { SwitchInputType makeType(String memberValue) { return new SwitchInputType<Boolean>(new Boolean(memberValue)); } }, Double { SwitchInputType makeType(String memberValue) { return new SwitchInputType<Double>(new Double(memberValue)); } }, Int32 { SwitchInputType makeType(String memberValue) { return new SwitchInputType<Integer>(new Integer(memberValue)); } }; // All must do this. abstract SwitchInputType makeType(String memberValue); } static class SwitchInputType<T> { public SwitchInputType(Object o) { } } |
由于字符串都是有效的标识符,因此可以使用这些字符串作为项标签创建枚举,使用Enum.ValueOf(Class,String)(或将在枚举类中创建的类似
例子:
1 2 3 4 5 6 7 |
Ankur已经提出了一种方法。另一种方法是将这些定义为常量。前-private static final string boolean="1";
开关(integer.parseint(boolean))案例1:…
案例2:…
等等。
将字符串映射到枚举,因为枚举可用于开关情况。每个枚举都有一个valueof(string)方法,该方法将字符串类型转换为枚举类型。然后可以将此枚举与开关内的各种情况匹配。唯一需要注意的是,字符串应该是要转换为枚举的有效标识符。如果字符串不是有效的标识符(即不能强制转换为枚举类型),则最终可能会得到IllegalArgumentException。