Visualizzazione dei risultati da 1 a 4 su 4

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da luca93abc Visualizza il messaggio
    Ora, io la instanzio specificando quanto c'è nel costruttore a partire da un file (quindi le informazioni iniziali le ho). Però poi ho necessità di instanziarla a partire dal solo numero (in stile albergo insomma). Come faccio? Ho provato a usare this(...), ma ho creato solo confusione. Grazie
    Una classe può avere più costruttori. Se ne ha di più semplicemente è perchè chi ha scritto la classe vuole offrire più modi diversi per costruire 1 oggetto di quella classe, magari permettendo di passare più o meno dati a seconda del costruttore. Alla fin fine si tratta solo di un principio di "flessibilità".

    Prendi per esempio la classe java.awt.Color. Ha svariati costruttori:

    public Color(float r, float g, float b)
    public Color(float r, float g, float b, float a)
    public Color(int r, int g, int b)
    public Color(int r, int g, int b, int a)

    ....e altri....

    Pertanto puoi costruire un oggetto Color scegliendo il costruttore che riceve i dati che hai a disposizione, con alpha se ce l'hai o senza alpha, ecc...

    Poi all'interno di un costruttore, come PRIMA istruzione è lecito invocare un altro costruttore della stessa classe. Questo lo si fa per riutilizzare il codice di un altro costruttore evitando ripetizioni.

    Sempre in Color viene fatto:

    codice:
        public Color(int r, int g, int b) {
            this(r, g, b, 255);
        }

    Ovvero il costruttore che riceve r/g/b passa la palla all'altro costruttore

    public Color(int r, int g, int b, int a)

    passando 255 come a (alpha). Così si riutilizza il codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Ok, ma il mio discorso era un altro, provo a rispiegarlo: io ho un file, mettiamo costruito così come di seguito.
    codice:
    numero[TAB]tipologia[TAB]MetriQuadri[TAB]MassimoNumeroOccupanti
    lo leggo e creo un oggetto di SoluzioneAbitativa con il costruttore della classe. Poi ho bisogno di recuperare i dati solo mediante il numero (ovvero passando il numero ottenere i metri e il numeroOccupanti corrispondenti). È possibile una cosa del genere? Grazie

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da luca93abc Visualizza il messaggio
    Ok, ma il mio discorso era un altro
    Pensavo che i tuoi dubbi fossero sui concetti dei costruttori e ho fatto la spiegazione generale .... male non fa.

    Quote Originariamente inviata da luca93abc Visualizza il messaggio
    io ho un file, mettiamo costruito così come di seguito.
    codice:
    numero[TAB]tipologia[TAB]MetriQuadri[TAB]MassimoNumeroOccupanti
    lo leggo e creo un oggetto di SoluzioneAbitativa con il costruttore della classe. Poi ho bisogno di recuperare i dati solo mediante il numero (ovvero passando il numero ottenere i metri e il numeroOccupanti corrispondenti). È possibile una cosa del genere?
    Certo che è possibile ma ... i costruttori non c'entrano nulla.
    L'oggetto lo hai già creato e vuoi ri-trovarlo in base a certi dati? Allora questo presuppone che tutti gli oggetti SoluzioneAbitativa che hai creato siano in una struttura dati che ti permetta di riottenere facilmente quel certo oggetto a fronte di un certo dato, un ID o qualcos'altro.

    Quel numero è unico? Se sì userai una mappa (Map) che associa i numeri agli oggetti. Quindi la questione/argomento è: strutture dati (non costruttori)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Tag per questa discussione

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.