在Java中使用枚举的优点是什么?

4

我正在学习Java中的枚举类型。似乎可以通过集合、字符串数组或用户自定义类型来实现与枚举相同的功能。

那么,引入Java 5中枚举类型的主要目的是什么?


1
在这里查看一个好的答案:https://dev59.com/hHM_5IYBdhLWcg3wWRkF#1419849 - Jonathan
3个回答

11

优点 -

  • 常量声明的集合
  • 限制方法中的输入参数
  • 可在 switch-case 中使用

它用于 由一组固定常量组成的字段

例如:Thread.State

public enum State {
    NEW,
    RUNNABLE,
    WAITING,
    BLOCKED,
    ...
}

或者 private enum Alignment { LEFT, RIGHT };

你可以使用 Enum 限制输入参数,例如 -

String drawCellValue (int maxCellLnghth, String cellVal, Alignment align){}

这里的align参数只能是Alignment.LEFTAlignment.RIGHT,很受限制。

enum与switch-case的示例:

String drawCellValue (int maxCellLnghth, String cellVal, Alignment align){
    switch (align) {
    case LEFT:...
    case RIGHT: ...
    }
    ...
}

在Java中,这些“常量”是指向对象的引用,这些对象可以具有不可变的数据或可变的状态,并且可以成为子类的成员。 - Peter Lawrey

0

其中之一的用途是作为一种模拟字符串类型变量上的switch的方法,因为在Java 7之前是不允许这样做的。


0
请查看“类型安全的枚举模式”(例如在Joshua Bloch的《Effective Java》第一版中)。Java的“枚举”结构是对这种设计模式的语言级别支持(语法糖)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接