在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

上一篇: Switch with string in Java1.6

下一篇: Why the switchcase statement in Java works like this?