当前位置: 首页 > 编程笔记 >

Java枚举类型在switch语句正确使用方法详解

狄灵均
2023-03-14
本文向大家介绍Java枚举类型在switch语句正确使用方法详解,包括了Java枚举类型在switch语句正确使用方法详解的使用技巧和注意事项,需要的朋友参考一下

很多人也许会尝试写下这样的代码:

ResultStructureEnum type = ResultStructureEnum.valueOf(userType);
switch (type) {
case ResultStructureEnum.STUDENT:
  ...
  break;
case ResultStructureEnum.TEACHER:
  ...
  break;
case ResultStructureEnum.PARENT:
  ...
  break;
...
}
# 这样编译不会通过,提示case后必须是一个常量

正确的写法:

ResultStructureEnum type = ResultStructureEnum.valueOf(userType);
switch (type) {
case STUDENT:
  ...
  break;
case TEACHER:
  ...
  break;
case PARENT:
  ...
  break;
...
}
# 即在 case 后面可以直接写枚举类型,不用加枚举类的类名。

如果需要根据类型的名称返回枚举实例,可以在枚举类中加入方法

 /**
   * 根据统计编号获取对应枚举实例
   *
   * @param statNo
   * @return
   */
  public static ResultStructureEnum getStructureEnum(String statNo) {
    if (StringUtils.isBlank(statNo)) {
      return null;
    }
    for (ResultStructureEnum result : ResultStructureEnum.values()) {
      if (result.statNo.equals(statNo)) {
        return result;
      }
    }
    return null;
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Java的枚举类型使用方法详解,包括了Java的枚举类型使用方法详解的使用技巧和注意事项,需要的朋友参考一下 1.背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量。之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏天,3表示秋天,4表示冬天。 这种方法称作int枚举模式。可这种模式有什么

  • 首先,我要说明我对C#中的枚举更加熟悉,而Java中的枚举似乎是一团糟。 正如您所看到的,我试图在下一个示例中使用switch语句@enums,但无论我在做什么,我总是得到一个错误。 我收到的错误是: 限定的大小写标签必须替换为限定的枚举常量 问题是我很理解这个错误,但我不能只写VALUE_A,因为枚举位于另一个子类中。有没有办法解决这个问题?为什么会发生在Java?

  • 本文向大家介绍Java语言中枚举能使用switch语句吗?,包括了Java语言中枚举能使用switch语句吗?的使用技巧和注意事项,需要的朋友参考一下 Java中的枚举(enum)是一种存储一组常量值的数据类型。您可以使用枚举来存储固定值,例如一周中的天,一年中的月等。 您还可以使用自定义值定义一个枚举来声明常量。但是您需要一个实例变量,一个构造函数和一个getter方法来返回值。 与switch

  • 我有两种枚举类型(并希望用户能够添加自己的)。 如果我不在接受枚举类型的方法中使用枚举属性,这就很好。 但是,如果我希望模板E被识别为一个枚举(在这里的开关中使用),我会得到错误“不能打开类型E的值”(在Eclipse中,开关(E)中的“E”带有红色下划线) 我对擦除有一点了解,它在编译时擦除了关于模板的所有信息,所以这就是问题所在。但是我尝试传入clazz类或者实现一个接口都没有成功。对此有什么

  • 问题内容: 对于建议抛出异常的人: 抛出异常不会给我编译时错误,而是给我运行时错误。我知道我会抛出异常,我宁愿在编译时死掉,也不愿在运行时死掉。 首先,我正在使用Eclipse 3.4。 我有一个数据模型,它的mode属性是Enum。 我目前正在编写此模型的视图,并且我有代码 我收到一个错误“此方法必须返回类型为java.awt.Color的结果”,因为我没有默认大小写,并且在函数末尾没有返回xx

  • 它在两个case语句上都显示错误“case表达式必须是常量表达式”。 那么我如何在swtich语句中使用字符串枚举呢?