Costruttori di oggetti con elenchi di parametri dinamici

0

Ho fatto una breve domanda e speravo che qualcuno potesse aiutarmi a capirlo. Sono nuovo di Java e sto cercando di imparare su classi e oggetti e vedo che puoi chiamare parametri nel costruttore della classe. Ad esempio:

public class PairOfDice {
    public int[] dice = new int[2];     //Create an array of length 2 to hold the value of each die
    PairOfDice(int die1, int die2){     //Constructor
        dice[0] = die1;                 //Assign first parameter to the first die
        dice[1] = die2;                 //Assign second parameter to the second die
    }
}

Ma mi chiedo se sia possibile dire a un costruttore (oa qualsiasi altro metodo) di aspettarsi un numero arbitrario di parametri. Ad esempio:

public class SetOfDice {
    SetOfDice(int numberOfDice /*Further parameters*/){     //Constructor
        public int[] dice = new int[numberOfDice];          //Create an array with a length based on the value of the first parameter
        for(int counter = 0; counter < numberOfDice ; counter++) {
            //Insert loop here for populating array with the rest of the parameters
        }
    }
}

Suppongo che non lo sia, ma voglio essere sicuro. Qualcuno può darmi qualche idea se qualcosa del genere è possibile? E se no, fammi sapere se c'è un modo migliore per ottenere questo risultato?

    
posta ShilohPell 21.09.2017 - 06:46
fonte

1 risposta

1

Quello che stai cercando in Java è chiamato "varargs" ( link )

Per il tuo esempio vorrai probabilmente che la firma del tuo costruttore sia

SetOfDice (int numDice, int ... valori

Quindi probabilmente vuoi una sorta di controllo di integrità per assicurarti che il numero di dadi sia uguale alla lunghezza dell'array dei valori. Un parametro vararg viene semplicemente considerato come una matrice di detto tipo.

Quindi copia il contenuto dell'array in una nuova copia.

Ci scusiamo per la mancanza di collegamenti, non ho idea di come formattare dal mio telefono.

    
risposta data 21.09.2017 - 07:18
fonte

Leggi altre domande sui tag