Quote Originariamente inviata da newutente Visualizza il messaggio
Quindi il codice corretto è questo:
Sì, tecnicamente corretto.

Quote Originariamente inviata da newutente Visualizza il messaggio
Come posso utilizzare le costanti AVANTI, INDIETRO e FERMO presenti nella enumerazione se non le ho neanche inizializzate?
Le costanti letterali della enum (i tuoi AVANTI, ecc...) sono riferimenti ad oggetti già istanziati!
Queste costanti sono alla fin fine campi static e final della enum che sono dello stesso tipo della enum e vengono inizializzati in automatico assegnando istanze distinte della enum.

Il compilatore traduce la enum in una cosa che è molto molto simile a:

codice:
public final class AzioneEnum extends java.lang.Enum<AzioneEnum> {
    public static final AzioneEnum AVANTI = new AzioneEnum("AVANTI");
    public static final AzioneEnum INDIETRO = new AzioneEnum("INDIETRO");
    public static final AzioneEnum FERMO = new AzioneEnum("FERMO");
}

Preciso che il codice sopra è molto fittizio, quello che viene generato a livello di bytecode è, ripeto, molto simile ma non esattamente uguale a questo. C'è dell'altro infatti, ci sono altre cose generate.

Serve solo per far capire che quei AVANTI ecc... sono campi con già un valore, un oggetto della enum.

Quindi la espressione AzioneEnum.AVANTI è il riferimento ad un oggetto già esistente!