在Java枚举中重写valueof()和toString()

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();

}

}

以上是 在Java枚举中重写valueof()和toString() 的全部内容, 来源链接: utcz.com/qa/430197.html

回到顶部