我有哪幾種常量的枚舉類,我想添加一些靜態值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