ho trovato Enum
s definiti come la seguente:metodo Enum l'override
public Enum MyEnum {
ONE
{
@Override
public int getSomething() {
return 1;
}
},
TWO
{
@Override
public int getSomething() {
return 2;
}
}
int getSomething()
{
return 0;
}
}
In qualche modo mi sento un certo tipo di disagio con questa implementazione perché vorrei pensare che idealmente un campo deve essere definito per questo scopo e la classe dovrebbe essere simile:
public Enum MyEnum{
ONE(1),
TWO(2)
private int theSomething;
private MyEnum(int something) {
theSomething = something;
}
int getSomething()
{
return theSomething;
}
}
Il problema è che, a parte il disagio personale, non riesco a trovare una buona ragione per cambiare questo codice. Esiste?
Il secondo modulo lo rende più leggibile e più estensibile, scegli quello! –
È una * macchina a stati * nel tuo primo esempio. Non implementato correttamente ('getSomething()' dovrebbe essere astratto) ... ma è per questo che usi quel tipo di struttura. E i metodi sono generalmente molto più complessi in un esempio reale (in realtà fanno cose piuttosto che restituire valori statici) e/o lanciano 'IllegalStateException' quando non dovrebbero essere chiamati in uno stato corrente. –
Entrambi sono approcci validi. –