我有一个枚举类,它有几个常量,我想添加一些静态值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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,现在我想知道:我是否只是搞乱了枚举类?因为我不希望FOCUSED在指定消息类型时可选择,但是处理枚举的类MessageType应该能够确定FOCUSED值...这样我就不需要在每个类中对其进行核心处理.
任何想法都表示赞赏.
编辑:虽然行为正常.此代码提供了预期的输出:
this.focused = MessageType.FOCUSED.toString();
System.out.println(focused);
Run Code Online (Sandbox Code Playgroud)
输出为"常规".
FOCUSED 只是 GENERAL 的别名。它不会出现在values()枚举的中,如果某些客户端代码使用 FOCUSED,它实际上会使用 GENERAL,因为两个变量引用相同的枚举值。所以不,我不认为你搞砸了。
为了减少混乱,也许您应该创建focused()一个返回 GENERAL 的静态方法。如果您决定焦点类型是另一种类型,这也可以避免重新编译客户端代码的需要。