Chiamata reciproca di costruttori

Re: Chiamata reciproca di costruttori

di Ragno Giovanni -
Numero di risposte: 0

Grazie per l'intervento, stavolta il ragno ha preso un granchio sorridente

effettivamente il problema stava nella definizione di MAXLUNGHEZZA

ecco dunque la versione corretta:

public class CodaArray<T> implements Coda<T> {
    private T[] dati;
    private Integer estrazione;//indice dove estrarre il prossimo dato
    private Integer inserimento;//indice dove inserire il prossimo dato
    private static final int MAXLUNGHEZZA=100;

    public CodaArray() {
        this(MAXLUNGHEZZA);
    }

    public CodaArray(int lung) {
        dati=(T[])new Object[lung];
        inserimento=0;
        estrazione=0;
    }
...

Metto anche un link ad una pagina di documentazione in cui si cita esplicitamente la chiamata del costruttore con this e un secondo link ad un'altra pagina in cui viene indicata la sequenza dei passi al momento dell'istanza di un oggetto in cui si legge (nellelenco numerato da 1 a 5) che la chiamata del costruttore dentro al costruttore (quindi come in this(MAXLUNGHEZZA);) viene fatta prima di dare valore agli attributi (nel nostro caso private final int MAXLUNGHEZZA=100;), il fatto di dichiarare private static final int MAXLUNGHEZZA=100; ne dà valore invece in compile-time e quindi è pienamente disponibile al momento dell'istanza.