在Java 1.6中使用字符串切换

时间:2013-01-24 08:16:52

标签: java switch-statement java-6

  

可能重复:
  Switch Statement with Strings in Java

我使用以下代码,我想知道是否有办法用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"));

2 个答案:

答案 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?