Originariamente inviato da Spocchioso
adesso, mi chiedevo come mai non potessi fare cose come

Key salto = Key.JUMP | Key.LEFT;
Perché ovviamente Key.JUMP ecc... sono oggetti (quindi no OR!!).

L'unica cosa di particolare che hai fatto è quella di mettere in ogni costante della enum (che ripeto ancora una volta è un oggetto) una proprietà di tipo int. Che comunque non la stai usando perché non hai messo un metodo getter per leggerla (quindi che serve??).

Originariamente inviato da Spocchioso
e se non è possibile, che metodi alternativi posso usarE?
Se vuoi puoi usare un EnumSet che è un "set" specializzato e ottimizzato per gestire costanti di una enum.
Esempio:

codice:
EnumSet<Key> set = EnumSet.noneOf (Key.class);

set.add (Key.UP);
set.add (Key.DOWN);

System.out.println (set.contains (Key.DOWN));
E in ogni caso, quella proprietà int non ti serve e non ti sarebbe in alcun modo utile (altrimenti che usi una enum a fare???)

Altrimenti avrebbe più senso ritornare alle classiche costanti intere, che quindi puoi mettere tranquillamente in OR.