4

nameJava列挙型のメソッドを使用するコードをいくつか実行しています。

name()JavaでEnumのメソッドを使用する方法と場所を誰かに説明してもらえますか?

4

2 に答える 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
于 2012-08-03T10:51:54.967 に答える
3

このname()メソッドは、finalとして宣言されていることを除けばほとんど同じtoString()であるため、列挙型の定義で変更することはできません。これは、たとえば、データをシリアル化するフレームワークを作成する場合に重要になる可能性があります。この場合、列挙型の名前は、定数を一意に識別する単一のJava識別子であるという事実に依存する必要があります。さらにいくつかのアプリケーションがあるかもしれませんが、マニュアルにあるように:

toString()toStringメソッドはよりユーザーフレンドリーな名前を返す可能性があるため、ほとんどのプログラマーはこれよりもこのメソッドを使用する必要があります。

一般にtoString()、出力が人間の読者を対象としているname()場合、および何らかの方法で解析するための別のプロセスを対象としている場合に使用する必要があります。

于 2012-08-03T10:52:41.347 に答える