1. ホーム
  2. java

[解決済み] Java enumでvalueof()とtoString()をオーバーライドする

2022-02-09 16:03:14

質問事項

の値は enum はスペースが必要な単語ですが、enumは値にスペースを入れることができないので、全部束になっています。をオーバーライドしたい。 toString() を追加するように指示します。

を使用したときに、正しい列挙を提供するようにしたいのです。 valueOf() を、スペースを追加したのと同じ文字列の上に置いてください。

例えば

public enum RandomEnum
{
     StartHere,
     StopHere
}

コール toString() について RandomEnum であり、その値は StartHere は文字列を返す "Start Here" . コール valueof() をその同じ文字列 ( "Start Here" は enum 値を返します。 StartHere .

どうすればいいのでしょうか?

どのように解決するのですか?

このコードを試してみてください。を上書きすることはできませんので valueOf メソッドを使用するには、カスタムメソッド ( getEnum を使用するようにクライアントを変更します。

public enum RandomEnum {

    StartHere("Start Here"),
    StopHere("Stop Here");

    private String value;

    RandomEnum(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    @Override
    public String toString() {
        return this.getValue();
    }

    public static RandomEnum getEnum(String value) {
        for(RandomEnum v : values())
            if(v.getValue().equalsIgnoreCase(value)) return v;
        throw new IllegalArgumentException();
    }
}