我正在查看一些使用Java Enum的name
方法的代码。
请问有人可以解释一下在Java中如何以及何时使用Enum的name()
方法吗?
我正在查看一些使用Java Enum的name
方法的代码。
请问有人可以解释一下在Java中如何以及何时使用Enum的name()
方法吗?
给定:
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()
。