Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Enum di stringhe??

  1. #1

    Enum di stringhe??

    Ciao a tutti, vi spiego il mio problema.. Dovrei creare un enum contenente i vari nomi di Operatori Turistici che in seguito verranno associati ad un agenzia.. e successivamente dovrò implementare anche delle funzioni che verifichino se un operatore appartenga ad una determinata agenzia o no.. il problema è che se io nell'enum ci inserisco un nome (es Marco Rossi) mi da errore, in quanto vede "marco" come tipo di variabile e mi da un errore, la Stessa cosa vale anche per le destinazioni (es. se inserisco New York), via allego il codice che ho scritto fin'ora

    codice:
    public class Prenotazioni {
        public enum operatoreTuristico{
         Marco, Alberto, Stefano, Gianni; //vorrei inserire nome e cognome e successivamente poterli confrontare
        }
    
        public enum destinazione{
            Capri, Roma, Napoli, Milano, Amsterdam, Parigi, Berlino, Praga, Madrid, Barcellona, Londra;
        }
        int ID;
        boolean prenotazione;
        String tipologia; //controllare se fare enum
        destinazione dest; //enum
        operatoreTuristico opTur; //enum
        boolean prenotato;

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

    Re: Enum di stringhe??

    Originariamente inviato da crystal86
    il problema è che se io nell'enum ci inserisco un nome (es Marco Rossi) mi da errore, in quanto vede "marco" come tipo di variabile e mi da un errore
    Semplicemente sarebbe un errore di sintassi.

    La questione se usare una enum è semplice: sono davvero dati "fissi"?? Se dovessi poi aggiungere/togliere nomi ovviamente devi modificare il codice e ricompilare!

    Ammettiamo che una enum ti vada bene, per dichiarare le costanti della enum devi (come per qualunque altro "identificatore") seguire le regole di Java (e magari anche le convenzioni sui nomi). Quindi mettere ad esempio Mario_Rossi (con underscore) o MarioRossi (attaccato). Insomma .... bisogna rispettare le regole sugli identificatori.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Enum di stringhe??

    Originariamente inviato da andbin
    La questione se usare una enum è semplice: sono davvero dati "fissi"?? Se dovessi poi aggiungere/togliere nomi ovviamente devi modificare il codice e ricompilare!
    In realtà sono dati fissi, già impostati a priori, dove non c'è la possibilità in futuro di aggiungere altri nomi.
    Un'altra cosa, se io volgio in altri metodi utilizzare i nomi presenti nell'enum per poterli confrontare o eseguire altre operazioni devo implementare la funzione equals o compareTo?? Grazie per i chiarimenti.

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

    Re: Re: Re: Enum di stringhe??

    Originariamente inviato da crystal86
    devo implementare la funzione equals o compareTo??
    No, sono già implementati nelle enum, tra l'altro non potresti nemmeno farne l'override in quanto sono final!! Insomma, la uguaglianza e la comparazione sono concetti già "cablati" nelle enum.
    E per dirla tutta, puoi usare == al posto di equals(). Questo è valido perché le istanze della enum sono solamente quelle assegnate alle costanti ... non ce ne possono essere altre!

    Comunque per tornare ai nomi, secondo le convenzioni sui nomi, essendo delle costanti si dovrebbero mettere come es. MARIO_ROSSI. Poi ovviamente nessuno ti vieta di metterle ad esempio come ho detto in precedenza.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ok Grazie mille davvero.. preciso e veloce nelle risposte.. ciao.. ..

  6. #6
    rieccomi..
    io ho definito la seguente enum in una classe:
    codice:
    public class Prenotazioni {    
             public enum destinazione{Amsterdam, Parigi, Berlino, Praga, Madrid, Barcellona;}
             private int ID;
             private boolean prenotazione;
             ecc...
    adesso in un altra classe vorrei verificare se una strigha è presente in questo enum.. come faccio?? ho provato a fare così ma mi da errore.. perchè??

    codice:
    public class ProvaAgenzia {
        public static void main (String args[]){
    
            String des="Amsterdam";
            if (destinazione.values()==des){
                        System.out.println("trovato..");
            }else{
                            System.out.println("non trovato..");
            }
    }
    
    RISULTATO ---> Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
    symbol  : variable Amsterdam
    location: class destinazione

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da crystal86
    adesso in un altra classe vorrei verificare se una strigha è presente in questo enum.. come faccio?? ho provato a fare così ma mi da errore.. perchè??
    Perché non hai compreso bene cosa sono le enum e come si gestiscono.

    Ogni costante della enum è un reference ad una istanza della enum stessa .... non un String.
    Se da una stringa es. "Amsterdam" vuoi ottenere il reference ad una delle costanti, puoi usare il metodo statico valueOf() della enum.

    Prenotazioni.destinazione dest = Prenotazioni.destinazione.valueOf("Amsterdam");

    (ho messo Prenotazioni.destinazione perchè deve essere così al di fuori di Prenotazioni!).

    valueOf() può lanciare IllegalArgumentException se la stringa non corrisponde a nessuna costante della enum.

    A quel punto puoi fare un confronto es. (il dest è quello sopra):

    if (dest == Prenotazioni.destinazione.Amsterdam) { ... }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Funziona.. Sei un Grandeeeee.. grazie 1000..

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 © 2025 vBulletin Solutions, Inc. All rights reserved.