У мене є клас, і в цьому класі я маю таке:
//some code
private int[] data = new int[3];
//some code
Тоді в моєму конструкторі:
public Date(){
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
Якщо я це роблю, все в порядку. Значення даних за замовчуванням ініціалізуються, але якщо я замість цього роблю це:
public Date(){
int[] data = {0,0,0};
}
Він говорить:
Local variable hides a field
Чому?
Який найкращий спосіб ініціалізувати масив усередині конструктора?
dataafter"//some code"має обсяг усього класу. тоді як зміннаdataв конструкторі має область дії всередині конструктора. і як тільки конструктор буде виконаний, змінна буде знищена. А такожdataзмінна всередині конструктора приховує змінну з тим самим іменем у класі. Це виправдовує помилкуLocal variable hides a field