Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Classe enum di Mesi

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480

    Classe enum di Mesi

    Ciao a tutti,
    in una classe X ho dichiarato la seguente classe enum
    codice:
    public enum MeseDellAnno {
    
            Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre
        };
    Successivamente utilizzo un ciclo for per iterare sui mesi:
    codice:
     for (MeseDellAnno d : MeseDellAnno.values()) {
    ....
    A questo punto vorrei sostituire la classe enum con la classe Calendar e portarla fuori dalla classe X per poi ovviamente richiamarla in X per utlizzarla

    Potete suggerirmi come posso fare ?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    A questo punto vorrei sostituire la classe enum con la classe Calendar e portarla fuori dalla classe X per poi ovviamente richiamarla in X per utlizzarla
    Una enum come MeseDellAnno sarebbe comunque molto più sensata non innestata in una classe. Perché è un concetto generale il mese dell'anno. Il fatto che tu l'avessi dentro la classe X ... beh, non è effettivamente proprio il massimo.

    Riguardo Calendar ... dovresti precisare meglio cosa centra in tutto questo. Perché dici che vuoi sostituire MeseDellAnno con Calendar?
    Cosa non va in MeseDellAnno? O perlomeno, per cosa lo usavi? Calendar cosa ti servirebbe?

    Vuoi che da un MeseDellAnno si possa ottenere il Calendar che rappresenta il 1° di quel mese nell'anno corrente (o un anno specificato), ad esempio? Si può fare, basterebbe mettere un metodo nella enum MeseDellAnno.
    Ultima modifica di andbin; 05-10-2014 a 14:41
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Per non innestata vuoi dire di creare una classe enum MeseDellAnno non interna alla classe X ? E poi richiamarla all'interno di X ?

    Con Calendar vorrei fare la stessa cosa che faccio con enum MeseDellAnno.
    Pensavo di utilizzare Calendar per non reinventarmi una classe enum MeseDellAnno se Java mette già a disposizione in Calendar quello che faccio con enum MeseDellanno

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Per non innestata vuoi dire di creare una classe enum MeseDellAnno non interna alla classe X ?
    Sì, un tipo "top-level", come altre classi.

    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Con Calendar vorrei fare la stessa cosa che faccio con enum MeseDellAnno.
    Ma non è la stessa cosa .... cioè un conto è una enum dei 12 mesi .... un altro conto è Calendar.

    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Pensavo di utilizzare Calendar per non reinventarmi una classe enum MeseDellAnno se Java mette già a disposizione in Calendar quello che faccio con enum MeseDellanno
    Un oggetto Calendar contiene una data con i campi (giorno, mese, ecc....) separati fino alla precisione del millisecondo. Ti serve questo?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da andbin Visualizza il messaggio

    Un oggetto Calendar contiene una data con i campi (giorno, mese, ecc....) separati fino alla precisione del millisecondo. Ti serve questo?
    No, in effetti no.
    Escludendo l'utilizzo di Calendar, perchè mettere la class enum MeseDellAnno top-level se poi alla fine la utlizzo solo in questa classe X ?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    perchè mettere la class enum MeseDellAnno top-level se poi alla fine la utlizzo solo in questa classe X ?
    Se veramente ti serve solo nella classe X ... allora ok, tienila pure dentro X. Sbagliato di per sé non lo è. La questione non è tanto tecnica ma concettuale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se veramente ti serve solo nella classe X ... allora ok, tienila pure dentro X. Sbagliato di per sé non lo è. La questione non è tanto tecnica ma concettuale.
    Cioè , nell'eventuale utilizzo dell'oggetto meseDellAnno in altre classi ?
    Sinceramente l'ho messa nella stessa classe di X solo per non creare un'altra classe che alla fine è utilizzata solo in X.
    Ti pare?
    Ultima modifica di roquentin; 05-10-2014 a 17:14

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    io credo che tu non la utilizzerai solo nella classe X, quindi è meglio farla fuori.
    Poi concettualmente leghi insieme concetti che non c'entrano molto, solo perché vuoi rappresentare i dati. Month è un oggetto a se stante.
    Se a te servono solo i nomi dei mesi, come l'hai strutturata (magari un nome migliore, basta Month) va bene, se ti serve altro credo che dovresti dare un'occhiata qui

    http://docs.oracle.com/javase/8/docs...ime/Month.html
    RTFM Read That F*** Manual!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da valia Visualizza il messaggio
    io credo che tu non la utilizzerai solo nella classe X, quindi è meglio farla fuori.
    Poi concettualmente leghi insieme concetti che non c'entrano molto, solo perché vuoi rappresentare i dati. Month è un oggetto a se stante.
    Se a te servono solo i nomi dei mesi, come l'hai strutturata (magari un nome migliore, basta Month) va bene, se ti serve altro credo che dovresti dare un'occhiata qui

    http://docs.oracle.com/javase/8/docs...ime/Month.html
    Quello che non riesco bene a capire è proprio il concetto di oggetto in Java.
    In questo caso, per esempio, perchè dici "leghi insieme concetti che non c'entrano molto" ? Perchè assoccio l'oggetto MESE ad uno che mi apre un file ?

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    No, perché il concetto di Mese è slegato dal concetto di Registrazione.
    E' un po' complesso da comprendere, capisco che non è facile.
    Il mese tu lo puoi associare a tanti tipi di oggetti, puoi riferirlo a registrazioni, puoi riferirlo a date di nascita, puoi riferirlo che so a data di acquisto di un automobile.
    Il mese quindi è un qualcosa che esiste in maniera indipendente dalla tua registrazione. Il fatto che a te individui un file o una cartella, beh è un significato logico che crei tu, non è un oggetto generale.

    Tu per la registrazione devi avere il riferimento al mese (quindi portarti dietro una istanza), non creare l'oggetto. Metterli insieme significa forzare oggetti che non hanno altri legami se non quello logico del tuo caso particolare.
    Vieni meno anche al principio dei riutilizzo, perché credo che tu userai l'enum in un altro posto (questione di tempo e la domanda la poni).

    L'oggetto, in generale, è qualsiasi cosa a cui tu riesci a dare un'identità univoca: una coppia di chiavi asimmetriche, una persona, un'auto, un pianeta. Vale anche per concetti astratti (ovviamente), solo che ora non mi viene un esempio
    RTFM Read That F*** Manual!!!

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.