java - 在 Java 枚举中覆盖 valueof() 和 toString()

标签 java enums overriding tostring value-of

我的 enum 中的值是需要在其中包含空格的单词,但是枚举的值中不能包含空格,所以它们都是捆绑在一起的。我想覆盖 toString() 以在我告诉它的位置添加这些空格。

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

例如:

public enum RandomEnum
{
     StartHere,
     StopHere
}

在值为 StartHereRandomEnum 上调用 toString() 返回字符串 “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();
    }
}

关于java - 在 Java 枚举中覆盖 valueof() 和 toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9662170/

相关文章:

java - 在 Java 中通过引用传递原始数据

java - 枚举的 values() 方法访问级别

c++在一个函数参数中使用按位或 "|"的多个枚举

css - 用 Bootstrap 3 css 覆盖 Liferay 的 mui css

perl - 如何覆盖对模块函数的调用,然后在覆盖中引用原始函数?

java - Kinect 2 对象跟踪最佳方法

java - 如何将 ListView 的远程图像转移到另一个布局,只需单击该项目? ...在 Android Studio 中

java - 如何在存在另一个提供程序的情况下使用 java 内部 XMLStreamWriter

c# - 检查枚举属性中是否为 null

Java添加ActionListener到特殊按钮