在Java1.6中用字符串切换[重复]

Posted

技术标签:

【中文标题】在Java1.6中用字符串切换[重复]【英文标题】:Switch with string in Java1.6 [duplicate] 【发布时间】:2013-01-07 22:24:26 【问题描述】:

可能重复: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"));

【问题讨论】:

是的,您可以按照此处的说明在关闭值的情况下执行此操作***.com/questions/338206/… ***.com/a/338230/637889 有一个 Before JDK 7 部分,其中包含使用 enum 类型的示例 其实这个答案是重复的 【参考方案1】:

如其他答案中所述,如果您使用的是 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());

【讨论】:

谢谢,但在这里你用大写字母写 BINARY,DECIMAL,BOOLEAN,我应该得到类似的 Boolean Binary 等......此外,我得到像 Edm.Int16 Edm.Boolean 等这样的字符串,那么应该如何我处理? 如果你不能改变你的代码用枚举值替换返回的字符串值,你不能使用 switch 语句... 如果我想做,我应该怎么做? 你能发布返回这些typeName字符串的方法的代码吗? for (Field field : declaredFields) String memberName = field.getName(); witchInputType> switchInput = MemberTypeRouting.switchInput(fieldTypeName【参考方案2】:

仅从 Java 7 开始支持带有字符串的开关。遗憾的是,旧版本不支持它,因此您不能在 Java 6 中使用它,您必须继续使用您已经在使用的 if/else 语句。

另请参阅几年前提出的这个问题: Why can't I switch on a String?

【讨论】:

我需要创建具有所有预期值的类(ENUN)而不是要求它们是什么意思?

以上是关于在Java1.6中用字符串切换[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在Bash中用数字对字符串进行排序[重复]

在Python中用单个空格替换多个空格[重复]

如何使用scala在Apache spark中用空字符串(“”)替换空值[重复]

如何在python pandas中用0填充空单元格[重复]

分享一些测试工作中用到的小技巧

如何为centos7安装java1.6.45