ho una classe e in quella classe ho questo:Java inizializzare un array int in un costruttore
//some code
private int[] data = new int[3];
//some code
Poi nel mio costruttore:
public Date(){
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
Se faccio questo, tutto è OK . i valori dei dati di default sono inizializzati ma se io invece faccio:
public Date(){
int[] data = {0,0,0};
}
Dice:
Local variable hides a field
Perché?
Qual è il modo migliore per inizializzare una matrice all'interno del costruttore?
grazie
spero che tu sia a conoscenza del concetto di portata delle variabili? la tua variabile 'data' dopo' "// some code" 'sta avendo un ambito dell'intera classe. mentre la variabile 'data' nel costruttore ha un ambito all'interno del costruttore. e una volta che il costruttore è finito, la variabile verrà distrutta. E anche la variabile 'data' all'interno del costruttore nasconde la variabile con lo stesso nome nella classe. Questo giustifica l'errore 'La variabile locale nasconde un campo' –