如何在Java枚举中使用name()方法

4

我正在查看一些使用Java Enum的name方法的代码。

请问有人可以解释一下在Java中如何以及何时使用Enum的name()方法吗?


4
你可以像使用其他方法一样使用它,无论何时需要枚举值的名称。你有什么疑问吗? - Peter Lawrey
2
Enum.name() 返回一个字符串,其中包含此枚举“实例”具有的确切名称。它对于键值存储非常有用,例如数据库“Neo4j”广泛使用它来引用属性。 - lynks
2个回答

7

给定:

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

3
name()方法与toString()方法非常相似,但它被声明为final,因此枚举定义不能更改它。例如,在编写序列化数据的框架时,您必须依赖于枚举名称是单个Java标识符,唯一标识常量的事实,这可能非常重要。可能还有其他应用程序,但正如手册中所说:

大多数程序员应该优先使用toString()方法,因为toString方法可能返回一个更适合用户阅读的名称。

总的来说,如果输出面向人类读者,则应使用toString(),如果输出面向另一个进程以某种方式进行解析,则应使用name()


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