java - 如何将 Switch 与字符串一起使用

标签 java android

我在下面编写了代码,以摆脱大量的 if then else 语句。唯一的问题是,我刚刚发现 Switch 语句不能与字符串一起使用。

是否有解决这个问题的技巧?

谢谢

switch(xpp.getName()) {
            case("creature") : attribID = Integer.parseInt(xpp.getAttributeValue(0));
            case("name") : elName = xpp.getName(); break;
            case("race") : elName = xpp.getName(); break;
            case("gender") : elName = xpp.getName(); break;
            case("alignment") : elName = xpp.getName(); break;
            case("age") : elName = xpp.getName(); break;
            case("condition") : elName = xpp.getName(); break;
            case("skinColor") : elName = xpp.getName(); break;
            case("hairColor") : elName = xpp.getName(); break;
            case("size") : elName = xpp.getName(); break;
            case("height") : elName = xpp.getName(); break;
            case("weight") : elName = xpp.getName(); break;
            case("hitPoints") : elName = xpp.getName(); break;
            case("armorClass") : elName = xpp.getName(); break;
            case("actionPoints") : elName = xpp.getName(); break;
            case("magicPoints") : elName = xpp.getName(); break;
            case("strength") : elName = xpp.getName(); break;
            case("dexterity") : elName = xpp.getName(); break;
            case("intelligence") : elName = xpp.getName(); break;
            case("weapon") : elName = xpp.getName(); break;
            case("armor") : elName = xpp.getName(); break;
            case("magicItem") : elName = xpp.getName(); break;
            case("attackSpell") : elName = xpp.getName(); break;
            case("defenseSpell") : elName = xpp.getName(); break;
            case("item1") : elName = xpp.getName(); break;
            case("item2") : elName = xpp.getName(); break;
        }

最佳答案

作为替代方案,如果您不能直接切换到 Java 7,最简单的方法是用一堆 if else 替换 switch 语句。或者,您可以尝试打开字符串的 hashCode,但我只建议您在确定没有冲突时这样做(不能保证 hashCode() 可以防止冲突!)。最清晰和最简单的解决方案是使用 if else。它保持可读性并允许您仍然支持旧版本的 Java。

编辑:只有一种情况有所不同!为什么不简单地做:

if (xpp.getName().equals("creature") {
    attribID = Integer.parseInt(xpp.getAttributeValue(0));
} else {
    elname = xpp.getName();
}

关于java - 如何将 Switch 与字符串一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435947/

相关文章:

java.lang.ClassCastException : [Ljava. lang.Object;不能转换为 entity.UserEntity

java - 如何处理外部类型?

Android 蓝牙 StartDiscovery() 总是返回 false

android - 如何在多行TextView的末尾插入ImageView?

android - 在 visual studio 中使用 apache cordova 构建 android 应用程序时出错?

java - 空指针异常在哪里?

java - Java中匿名对象的默认引用类型

java - 无法编辑其他 Parse User 对象,保存在后台不会写入 Parse Dashboard

java - Android:onSensorChanged 的​​替代方案?当手机背面放在 table 上时(没有移动时)没有加速度计数据

Java 匿名类作为实用函数?设计实际使用的参数,或一个参数(较大的对象)