Io non ho capito una cosa, se dichiaro un tipo enumerativo come questo:
enum Seme { CUORI, QUADRI, FIORI, PICCHE}
poi come faccio a sapere che ad esempio il secondo valore è QUADRI, oppure ricavare la posizione partendo dalla parola QUADRI?
Io non ho capito una cosa, se dichiaro un tipo enumerativo come questo:
enum Seme { CUORI, QUADRI, FIORI, PICCHE}
poi come faccio a sapere che ad esempio il secondo valore è QUADRI, oppure ricavare la posizione partendo dalla parola QUADRI?
a me servirebbe fare una cosa di questo tipo:
int x = (int) Seme.PICCHE;
: )
Ogni costante della enum è un oggetto .... un po' particolare. Ognuno ha un metodo ordinal() che restituisce la posizione nella dichiarazione della enum (per chiarire nel tuo caso: Seme.CUORI.ordinal() dà 0, Seme.QUADRI.ordinal() dà 1, ecc...).Originariamente inviato da Lucked
poi come faccio a sapere che ad esempio il secondo valore è QUADRI, oppure ricavare la posizione partendo dalla parola QUADRI?
Questo ovviamente no! PICCHE è un oggetto, non puoi certo farne un cast a int!Originariamente inviato da Lucked
a me servirebbe fare una cosa di questo tipo:
int x = (int) Seme.PICCHE;
Ad ogni elemento della Enum puoi associare un valore.
Quindi:Codice PHP:
public enum Seme {
CUORI(1),
QUADRI(2),
PICCHE(3),
FIORI(4);
private int value;
private Seme(int val) {
this.value = val;
}
public int getValue(){
return value;
}
}
Codice PHP:
int x = Seme.PICCHE.getValue();
Al mio segnale... scatenate l'inferno!
ok grazie a tutti. Mi servirebbe un altra cosa.
Fare una cosa tipo : Seme.valueof(2) e ricevere ad esempio QUADRI. Ho trovato nella documentazione un valueof, un metodo statico che non sono ancora riuscito ad utilizzare. Consigli?
boh
Si può fare ma non così. Ogni tipo enum ha un metodo statico values() che restituisce un array di tutte le costanti. Quindi:Originariamente inviato da Lucked
Fare una cosa tipo : Seme.valueof(2) e ricevere ad esempio QUADRI.
Seme s = Seme.values()[1];
in s hai il riferimento alla costante QUADRI.
valueOf() riceve un String.Originariamente inviato da Lucked
Ho trovato nella documentazione un valueof
Seme s = Seme.valueOf("QUADRI");
Ciao Andbin, grazie, in effetti mi è sfuggito questo modo: Seme.values()[1] mi serviva proprio questo. Poi il valueOf dell'enum, è un po' diverso, utilizza due valori in ingresso e non ho capito cosa faccia : ) cmq bene, sono contento che si possa fare quello che volevo. grazie.
Il valueOf() di java.lang.Enum è semplicemente la gestione generica e "globale" per ottenere una costante di una enum a partire da un String. Il valueOf() di una enum specifica semplicemente invoca valueOf() di Enum passando anche il proprio tipo.Originariamente inviato da Lucked
Poi il valueOf dell'enum, è un po' diverso, utilizza due valori in ingresso e non ho capito cosa faccia
Seme q = Enum.valueOf(Seme.class, "QUADRI");
e
Seme q = Seme.valueOf("QUADRI");
danno sostanzialmente lo stesso risultato. Ma è meglio la seconda, non solo perché più corta (!) ma anche perché dà meglio l'idea del concetto.
Ahhh ok, bravo, mi ero perso nelle < >