У меня есть класс, и в этом классе у меня есть следующее:
//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
Зачем?
Как лучше всего инициализировать массив внутри конструктора?
dataпосле"//some code"имеет область действия всего класса. в то время как переменнаяdataв конструкторе имеет область видимости внутри конструктора. и как только конструктор будет готов, переменная будет уничтожена. А такжеdataпеременная внутри конструктора скрывает переменную с тем же именем в классе. Это оправдывает ошибкуLocal variable hides a field