在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中用字符串切换[重复]的主要内容,如果未能解决你的问题,请参考以下文章