我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();
}
}
问题内容: 我需要重新实现一些枚举的enum.valueof方法,以使它们不再抛出异常,而如果枚举中不存在值,则它们仅返回null。 我正在尝试基本 但是它不起作用,说我需要重写或实现一个超级类型。 我猜想我可以开设一个超级班,但是我不确定如何将它们放在一起。有任何想法吗? 问题答案: 你不能 您必须定义另一个不同的方法。valueOf方法由编译器自动生成。
我刚刚注意到javadoc状态(强调为我的): 返回声明中包含的此枚举常量的名称。该方法可能被重写,尽管它通常不是必需的或不需要的。当存在更“程序员友好”的字符串窗体时,枚举类型应重写此方法。 默认情况下,和返回相同的内容,因此即使被重写,仍然可以通过方法访问枚举的名称。 编辑:供参考,的javadoc(强调与原文相同): 返回此枚举常量的名称,与在其枚举声明中声明的名称完全相同。大多数程序员应该
谁能解释一下 和 我经常使用前一个示例(可能太频繁了,没有足够的封装),但我从未使用过第二个示例。 谢啦 枚举
问题内容: 我在Java类中具有以下内容: 我有更多需要类的类,它们具有相同的属性和相同的构造函数,但具有不同的常量。因此,在另一堂课中,我需要以下内容: 如果这是一个类,则可以使用继承来不重复构造函数中的代码(并且可能会对该属性进行获取)。为了在每次需要这种重复时不再重复自己,我该 怎么办?理想情况下,我只想为each指定常量,并保留构造函数和属性。 问题答案: 在这种情况下可能会有所帮助。鉴于
问题内容: 这件事让我困扰了一阵子。我之前曾问过一些问题,但措辞可能很拙劣,而且例子太抽象了。所以目前尚不清楚我实际上在问什么。我会再尝试。并且请不要下结论。我希望这个问题根本不容易回答! 为什么我不能在Java中使用带有泛型类型参数的枚举? 问题不在于语法上为什么不可能做到这一点。我知道这只是不受支持。问题是:为什么JSR人员会“忘记”或“忽略”这个非常有用的功能?我无法想象与编译器相关的原因,
在核心Java中,抽象类Java。lang.Enum是所有Java枚举类型的基类。有一些常见的方法,例如: 然而,正如我们所知,还有一种常用的方法公共静态