Ho una classe enum che ha diverse costanti, e voglio aggiungere qualche valore statico FOCUSED
che indica quale dei valori enum è concentrarsi ...Enum: Ho appena fatto qualcosa di indesiderato?
ho trovato un modo:
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;
}
}
Tuttavia , ora mi chiedo: ho appena combinato con la classe enum? Perché non voglio che FOCUSED
sia selezionabile quando si specifica il tipo di messaggio, tuttavia una classe che gestisce un enum di MessageType
dovrebbe essere in grado di determinare il valore FOCUSED
... Tale che non ho bisogno di farlo in ogni classe.
Ogni pensiero è apprezzato.
MODIFICA: Si sta comportando correttamente però. Questo codice dà i risultati attesi:
this.focused = MessageType.FOCUSED.toString();
System.out.println(focused);
L'uscita è "Generale".
"una classe che gestisce un enum di MessageType dovrebbe essere in grado di determinare il valore FOCUSED" - non è davvero chiaro cosa intendi con questo. Con il codice che hai dato, il valore 'FOCUSED' è * sempre *' GENERALE' –
Questo è vero, l'idea è che se voglio cambiare 'FOCUSED' in un momento successivo in developemtn, che quindi ho solo bisogno di cambiarlo in un posto. Al contrario di ogni variabile che imita il valore di "FOCUSED", lo si codifica su 'GENERAL'. – skiwi
Quindi vuoi davvero che sia effettivamente una costante - un alias, quasi? * Se * questo è il caso, va bene - ma questo non va di pari passo con "qualche valore statico FOCUSED che indica quale dei valori enum è focalizzato" - perché sembra un pezzo di * stato * che può variare. In parte non è chiaro perché non è ovvio che cosa significhi per un tipo di messaggio concentrarsi in primo luogo. –