Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    tipi enumerativi , dubbio

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    a me servirebbe fare una cosa di questo tipo:

    int x = (int) Seme.PICCHE;

    : )

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: tipi enumerativi , dubbio

    Originariamente inviato da Lucked
    poi come faccio a sapere che ad esempio il secondo valore è QUADRI, oppure ricavare la posizione partendo dalla parola QUADRI?
    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
    a me servirebbe fare una cosa di questo tipo:

    int x = (int) Seme.PICCHE;
    Questo ovviamente no! PICCHE è un oggetto, non puoi certo farne un cast a int!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Ad ogni elemento della Enum puoi associare un valore.
    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;
        }
        
        
        

    Quindi:

    Codice PHP:
    int x Seme.PICCHE.getValue(); 
    Al mio segnale... scatenate l'inferno!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    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?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    boh

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da Lucked
    Fare una cosa tipo : Seme.valueof(2) e ricevere ad esempio QUADRI.
    Si può fare ma non così. Ogni tipo enum ha un metodo statico values() che restituisce un array di tutte le costanti. Quindi:

    Seme s = Seme.values()[1];

    in s hai il riferimento alla costante QUADRI.


    Originariamente inviato da Lucked
    Ho trovato nella documentazione un valueof
    valueOf() riceve un String.

    Seme s = Seme.valueOf("QUADRI");
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    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.

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da Lucked
    Poi il valueOf dell'enum, è un po' diverso, utilizza due valori in ingresso e non ho capito cosa faccia
    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.

    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    Ahhh ok, bravo, mi ero perso nelle < >

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.