我正在通过一些代码使用name
Java Enum 的方法。
任何人都可以向我解释如何以及在哪里使用name()
Java 中的 Enum 方法。
鉴于:
enum Direction {
NORTH("north"), SOUTH("south"), EAST("east"), WEST("west");
private final String printableValue;
Direction(String printableValue) {
this.printableValue = printableValue;
}
@Override
public String toString() {
return printableValue;
}
}
然后这段代码:
Direction travelDirection = Direction.NORTH;
System.out.println("I am going " + travelDirection);
将打印
I am going north
但是这段代码:
Direction travelDirection = Direction.NORTH;
System.out.println("I am going " + travelDirection.name());
将打印
I am going NORTH
这个name()
方法很像toString()
,只是它被声明为final,所以枚举定义不能改变它。这可能很重要,例如在编写框架来序列化数据时,您必须依赖枚举的名称是唯一标识常量的单个 Java 标识符这一事实。可能还有更多应用程序,但正如手册所说:
大多数程序员应该
toString()
优先使用该方法,因为 toString 方法可能会返回一个对用户更友好的名称。
一般来说,我会说你应该toString()
在输出用于人类读者时使用,并且name()
当它针对以某种方式解析的另一个进程时使用。