ワイルドカードを使用してトピックを表現するので、このWEATHER.SUNNYのようなdota表記を使用してenumを持つ必要があります。列挙型は有効な識別子である必要があるため、これは不可能であることはわかっています。Java - ドット表記でenumを作成する
here誰かがtoString mehtodを上書きすることを提案しますが、どういう意味なのでしょうか。 しかし、これはまだ可能ですか?
ワイルドカードを使用してトピックを表現するので、このWEATHER.SUNNYのようなdota表記を使用してenumを持つ必要があります。列挙型は有効な識別子である必要があるため、これは不可能であることはわかっています。Java - ドット表記でenumを作成する
here誰かがtoString mehtodを上書きすることを提案しますが、どういう意味なのでしょうか。 しかし、これはまだ可能ですか?
あなたは間違いなく@Stefanを示唆して何ができるが、これはにフィールドを取り付けるための良いユースケースであるかもしれませんあなたの列挙値:
public enum Topic {
SUNNY("WEATHER.SUNNY"), CLOUDY("WEATHER.CLOUD"), ...
String notation;
Topic(String notation) {
this.notation = notation;
}
public String getNotation() { return notation; }
}
そして、Topic.SUNNY.getNotation()
を呼び出すことができます。
のtoStringをオーバーライドする考えを示したサンプルコード:
public class Test {
enum Weather { Sunny, Cloudy;
@Override
public String toString() {
return "WEATHER." + super.toString().toUpperCase();
}
};
public static void main(String[] args) {
System.out.println(Weather.Sunny);
}
}
出力:WEATHER.SUNNY
大文字の名前を持つ列挙型の定義に問題はありません。 Javaの命名規則とは一致しませんが、動作します。
enum WEATHER {
SUNNY, CLOUDY;
}
次に、あなたはこのように使用します。このappraochため
WEATHER weather = WEATHER.SUNNY
おかげでその作業罰金。私はこれをより複雑な構造にどのように適用するかについては本当にわかりません。次のようなものを想像してみてください:WEATHER.SUMMER.SUNNY.DRYHUMIDITY –
暗黙の階層がありますか?どのオブジェクトにも、それぞれのカテゴリの1つがありますか? 1つのTopicクラスのフィールドとして異なる列挙型にする必要がありますか?セットを保存できますか?ソレアはあなたが何をしようとしているのかによって異なります。 –
EvanM
すみませんでした。実際には、ドットは階層的な順序を意味し、ツリー構造につながります。これを文字列で行うのは明らかに問題ではありませんでしたが、列挙型の場合でも、もっと複雑な構造をどうやって実現するのか本当に分かりません。 –