我有哪几种常量的枚举类,我想添加一些静态值FOCUSED
指示哪个枚举值已集中...Enum:我做了一些不需要的事情吗?
我找到了一种方法:
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
......这样我就不需要在每个类中对它进行硬核。
任何想法表示赞赏。
编辑:它虽然表现正确。 此代码给出了预期的输出:
this.focused = MessageType.FOCUSED.toString();
System.out.println(focused);
输出是“常规”。
“处理MessageType枚举的类应该能够确定FOCUSED值” - 这实际上并不清楚你的意思。通过你提供的代码,'FOCUSED'的值总是*'GENERAL' – 2013-05-11 14:49:57
的确如此,这个想法是,如果我想在developpemtn的后面改变'FOCUSED',那么我只需要在一个地方改变它。与通过将其硬编码为'GENERAL'的每个变量模仿'FOCUSED'值相反。 – skiwi 2013-05-11 14:51:16
所以你真的希望它是一个不变的 - 一个别名,几乎? *如果*是这种情况,那很好 - 但这并不真正与“某些静态值FOCUSED,它指示哪些枚举值具有焦点”相同 - 因为这听起来像是一个* state *,它可能会有所不同。部分原因还不清楚,因为消息类型首先关注的内容并不明显。 – 2013-05-11 14:53:50