gpt4 book ai didi

java - 枚举 : Did I just do something unwanted?

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:14 26 4
gpt4 key购买 nike

我有一个枚举类,它有几个常量,我想添加一些静态值 FOCUSED,它指示哪个枚举值具有焦点...

我找到了一个方法:

package messagesystem;

/**
*
* @author Frank
*/
public enum MessageType {
ALL,
GENERAL,
SEND,
RECEIVE,
LOG,
EXCEPTION,
DEBUG,
PM;

public final static MessageType FOCUSED = GENERAL;

private final String value;

MessageType() {
String firstLetter = name().substring(0, 1);
String otherLetters = name().substring(1, name().length());
this.value = firstLetter.toUpperCase() + otherLetters.toLowerCase();
}

@Override
public String toString() {
return value;
}
}

但是,现在我想知道:我是不是把枚举类弄乱了?因为我不希望在指定消息类型时选择 FOCUSED,但是处理 MessageType 枚举的类应该能够确定 FOCUSED value...这样我就不需要在每个类中都硬核它。

如有任何想法,我们将不胜感激。

编辑:虽然它的行为是正确的。此代码给出了预期的输出:

    this.focused = MessageType.FOCUSED.toString();
System.out.println(focused);

输出是“一般”。

最佳答案

FOCUSED 只是 GENERAL 的别名。它不会出现在枚举的 values() 中,如果某些客户端代码使用 FOCUSED,它实际上会使用 GENERAL,因为两个变量都引用相同的枚举值。所以不,我不认为你搞砸了。

为了减少混淆,也许您应该使 focused() 成为一个返回 GENERAL 的静态方法。如果您决定关注的类型是另一种类型,这也可以避免重新编译客户端代码的需要。

关于java - 枚举 : Did I just do something unwanted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com