2

同じクラスの複数の列挙型メンバーについて、よりユーザーフレンドリーな説明を追加しようとしています。今のところ、各列挙型を小文字で返しています。

public enum Part {
    ROTOR, DOUBLE_SWITCH, 100_BULB, 75_BULB, 
    SMALL_GAUGE, LARGE_GAUGE, DRIVER;

    private final String description;

    Part() {
      description = toString().toLowerCase();
    }

    Part(String description) {
      this.description = description;
    }

    public String getDescription() {
      return description;
    }
}

各列挙値に、各PartメンバーのtoString()を介して表示できるよりユーザーフレンドリーな名前を付ける方法はありますか?たとえば、パーツを介して相互作用する場合:

for (Part part : Part.values()) {
System.out.println(part.toString());
}

リテラルリストを取得するのではなく:

ROTOR
DOUBLE_SWITCH
100_BULB
75_BULB 
SMALL_GAUGE
LARGE_GAUGE
DRIVER

次のような出力ができるように、各アイテムに意味のある説明を付けたいと思っています。

Standard Rotor
Double Switch
100 W bulb
75 W bulb 
Small Gauge
Large Gauge
Torque Driver

そのため、Partenumクラスの各enumメンバーにこれらの意味のある説明を与える方法があるかどうか疑問に思いました。

どうもありがとう

4

2 に答える 2

9

列挙型は実際には偽装されたクラスであり、単一のインスタンスになることを余儀なくされています。以下のようにして、それぞれに名前を付けることができます。コンストラクターで任意の数のプロパティを指定できます。参照方法には影響しません。以下の例では、ROTORは「これはローターです」の文字列表現になります。

public enum Part {
  ROTOR("This is a rotor");

  private final String name;

  Part(final String name) {
      this.name = name;
  } 

  @Override
  public String toString() {
      return name;
  }
}
于 2009-11-14T15:33:59.637 に答える
0

はい、説明を受け取るコンストラクターがすでにあります。使ってみませんか?

public enum Part {
    ROTOR<b>("Rotor")</b>, DOUBLE_SWITCH<b>("Double Switch")</b>, 100_BULB, 75_BULB, 
    SMALL_GAUGE, LARGE_GAUGE, DRIVER;

    private final String description;

    Part() {
      description = toString().toLowerCase();
    }

    Part(String description) {
      this.description = description;
    }

    public String getDescription() {
      return description;
    }
}
于 2009-11-14T15:34:17.047 に答える