当前位置: 首页 > 知识库问答 >
问题:

字符串开关大小写标签的编译器错误

松和璧
2023-03-14

我有一个枚举常量的开关大小写标签。我的枚举和大小写标签示例如下:

private Enum PreferenceType {
   FIRST,SECOND,THIRD;

   private String prefKey;

   PreferenceType(String prefKey) {
      this.prefKey = prefKey;
   }

   @Override
   public String toString() {
      return prefKey;
   } 
}

private String getPreference() {
   switch(getMessage())
   {
    case PreferenceType.FIRST.toString():
       //do something;
       break;

    case PreferenceType.SECOND.toString():
       //do something;
       break;

    case PreferenceType.THIRD.toString():
       //do something;
       break;
    default: break;
    }
 }

整个case标签语句由eclipse用红线标记“case PremisceType. FIRST. toString():”,当我将鼠标悬停在case标签上时,错误显示“case表达式必须是常量表达式”。我的jdk是1.7版,我的eclipse是3.7.2版。有人能告诉我如何解决这个问题吗?

共有2个答案

秦浩漫
2023-03-14

错误消息说明了一切——case表达式必须是常量表达式

您使用的是toString()方法的返回值,就编译器而言,它不是常量。

颜均
2023-03-14

您可以在枚举上切换,但不能在String上切换。

尝试:

private Enum PreferenceType {
    FIRST("key1"),SECOND("key2"),THIRD("key3");

    static Map<String, PreferenceType> prefMap = new HashMap<String, PreferenceType>();

    private String prefKey;

    PreferenceType(String prefKey) {
        this.prefKey = prefKey;
        prefMap.put(prefKey, this);
    }

    @Override
    public String toString() {
        return prefKey;
    }

    public static PreferenceType getPreferenceTypeFor(final String key) {
        return prefMap.get(key);
    } 
}

开关应该是。。。

switch(PreferenceType.getPreferenceTypeFor(getMessage()))

你的案件陈述会是...

case PreferenceType.FIRST:
    //do something;
break;

case PreferenceType.SECOND:
    //do something;
break;

case PreferenceType.THIRD:
    //do something;
break;

现在,当您调用PreferenceType时。getPreferenceTypeFor(“key1”)您将获得PreferenceType。首先可以在交换机中使用。

 类似资料:
  • 需要制作一个密码程序,用户在开始时设置密码,在程序停止前可以输入密码3次。该程序不能区分大小写。 程序按预期打印,但不区分大小写

  • 问题内容: 我遇到的问题是我无法让我的密码验证程序来检查字符串,以确保其中的一个字符为大写字母,而一个字符为小写字母,它将检查整个字符串中是否存在一个字符。其他,并根据要检查的语句打印错误消息。 我已经查看了该站点和Internet上的答案,但是找不到。这是功课。 下面是我当前的代码。 问题答案: 要确定字符串是否包含大写和小写字符,可以使用以下命令: 这使您可以检查: 本质上,这通过检查Stri

  • 本文向大家介绍JavaScript更改字符串的大小写,包括了JavaScript更改字符串的大小写的使用技巧和注意事项,需要的朋友参考一下 JavaScript提供了两个方法,将字符串转换为全部大写或全部小写,从而可以将“hello”更改为“HELLO”,或者将“NOT”更改为“not”。你可能会问,为什么?将字符串中的字母转换为相同的大小写,这可以使得比较两个字符串变得更容易。例如,假设你创建了

  • Python 中,为了方便对字符串中的字母进行大小写转换,字符串变量提供了 3 种方法,分别是 title()、lower() 和 upper()。 Python title()方法 title() 方法用于将字符串中每个单词的首字母转为大写,其他字母全部转为小写,转换完成后,此方法会返回转换得到的字符串。如果字符串中没有需要被转换的字符,此方法会将字符串原封不动地返回。 title() 方法的语

  • String 类的 toLowerCase() 方法可以将字符串中的所有字符全部转换成小写,而非字母的字符不受影响。语法格式如下: toUpperCase() 则将字符串中的所有字符全部转换成大写,而非字母的字符不受影响。语法格式如下: 例如: 例 1 下面的实例代码演示了如何对字符串应用大写和小写转换。 代码比较简单,运行后的输出结果如下:

  • Python3 实例 以下代码演示了如何将字符串转换为大写字母,或者将字符串转为小写字母等: # Filename : test.py # author by : www.runoob.com str = "www.runoob.com" print(str.upper()) # 把所有字符中的小写字母转换成大写字母 print(str.lower()) #