我的enum中的值是需要在其中包含空格的单词,但是枚举的值中不能包含空格,因此将它们全部堆积在一起。我想覆盖toString()以在我告诉它的地方添加这些空格。

当我在添加空格的同一字符串上使用valueOf()时,我还希望该枚举提供正确的枚举。

例如:

public enum RandomEnum
{
     StartHere,
     StopHere
}

toString()上调用RandomEnum,其值为StartHere会返回字符串"Start Here"。在同一字符串(valueof())上调用"Start Here"返回枚举值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();
    }
}

07-26 06:42