PDA

View Full Version : [JAVA] - utilizzo pratico degli "enum"


boris88
27-01-2011, 22:02
Sto affrontando da poco l'argomento "enum"; ho capito cosa sono (più o meno...), ma non riesco ancora a capirne l'utilizzo pratico.

Cioè, ciò che posso fare con gli enum, volendo lo potrei fare anche con delle normali costanti intere dichiarate all'interno di una classe, o addirittura con degli array.

Quindi a che pro usare gli enum?

PGI-Bis
28-01-2011, 00:39
Il problema risolto dagli enumerativi è questo:

int AVANTI = 0
int INDIETRO = 1
void muovi(int direzione) { ... }

Posso dire "muovi(756)" ? Sì. E' una bella cosa? Quasi certamente no.

Gli enumerativi ti permettono di creare degli insiemi di valori i cui elementi sono arbitrariamente limitati.

enum Direzione { AVANTI, INDIETRO }
void muovi(Direzione direzione) {...}

Qui non posso che dire muovi(AVANTI) o muovi(INDIETRO).

Passare da un intero a un enumerativo significa in buona sostanza dare più chance al compilatore di rilevare un errore nel codice. Che è idilliaco perchè se alle stupidate ci pensa lui tu ti puoi concentrare sul succo del programma.

boris88
28-01-2011, 01:38
int AVANTI = 0
int INDIETRO = 1
void muovi(int direzione) { ... }

qui in teoria potrei anche passare un parametro del tipo:
muovi (int AVANTI)

ma non sarebbe molto "bello".

Quindi, in sostanza, le enumerazioni non sono una vera e propria necessità, ma più una comodità, giusto?
Cioè, è preferibile utilizzarle per motivi di leggibilità?

banryu79
28-01-2011, 09:09
A ciò che ha sottolineato PGI-Bis, ti allego questo articolo (http://www.mokabyte.it/2005/02/java5_enum.htm), secondo me sintetico e molto chiaro (almeno io l'ho trovato più chiaro del tutorial Java ufficiale sulle enum).

boris88
28-01-2011, 12:00
ok, leggendo anche l'articolo che mi hai consigliato penso di poter concludere che una enumerazione permette di:
definire insiemi finiti determinare un tipo specifico anziché delle semplici costanti numeriche usare una sintassi piu compatta per creare oggetti di un insieme finito


Dimentico qualcosa?