Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Overload del Costruttore con parametri

    Ciao a tutti,
    vorrei chiedervi se è possibile effettuare in Java l'overload del costruttore, utilizzando dei parametri di default...mi spiego con un esempio:

    codice:
    private final default_var1="prova1";
    private final default_var2="prova2";
    
    public Costruttore(String var1, String var2)
    {
       ...
    }
    
    public Costruttore() {this(default_var1,default_var2);}
    In pratica vorrei che se il costruttore è richiamato senza parametri, essi vengano inizializzati a valori di default indicati nelle variabili default_var1 e default_var2.
    Ma mi da un errore di compilazione per ciascuna variabile:
    "Cannot refer to an instance field default_var1 while explicitly invoking a constructor"

    So bene che se dichiaro il secondo costruttore cosi funziona:

    codice:
    public Costruttore() { this("prova1","prova2");}
    ma vorrei appunto che ciò fosse parametrizzato mediante le variabili di default...qualche soluzione? Grazie

  2. #2
    secondo me, quello che chiedi di fare non ha moltissimo senso, mi spiego meglio:
    partendo dal presupposto di avere più di un costruttore, se nel tuo codice richiami un costruttore specifico sai bene quanti parametri (in quel punto del tuo programma) utilizzerai per quel costruttore.. quindi al limite passerai dei parametri nulli che puoi cmq gestire all'interno del costruttore..

    Codice PHP:
    private static final String default_var1="prova1";
    private static final 
    String default_var2="prova2";

    public 
    Costruttore(String var1String var2)
    {
       if (
    var1=null){
          
    var1 default_var1
       }
       
    //...

    Per fare quello che chiedi tu, ossia:
    In pratica vorrei che se il costruttore è richiamato senza parametri, essi vengano inizializzati a valori di default indicati nelle variabili default_var1 e default_var2.
    basta che tu modifichi il costruttore di default per usare al suo interno le variabili di default.
    occhio a come dichiari le costanti però, se vuoi usarle devi farle static e dichiararne il tipo!

  3. #3
    Beh ma modificando le variabili impostando quelle di default ci sarebbe una ripetizione inutile di codice...dichiarando i parametri di default come STATIC tuttavia sembra essersi risolto tutto...grazie

  4. #4
    Sì hai ragione, il mio era un esempio in generale.. ad ogni modo, felice di esserti stato utile

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

    Re: Overload del Costruttore con parametri

    Originariamente inviato da giaomnitel1
    In pratica vorrei che se il costruttore è richiamato senza parametri, essi vengano inizializzati a valori di default indicati nelle variabili default_var1 e default_var2.
    Ma mi da un errore di compilazione per ciascuna variabile:
    "Cannot refer to an instance field default_var1 while explicitly invoking a constructor"
    Non ti compila e non è corretto per un motivo molto semplice (e basta solo conoscere "bene" il processo di inizializzazione degli oggetti): il 'this' cioè il reference all'oggetto stesso esiste solo dopo che il super-costruttore è stato eseguito. Cioè solo dopo la chiamata a super().

    In sostanza vuol dire che nella istruzione super() non puoi fare riferimento a metodi o variabili di istanza dell'oggetto che stai "costruendo". Puoi usare solo metodi/variabili di classe (static).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.