Добрый день. Разбираюсь в Java и возник вопрос:
Если делаю массив connections статическим и использую его в методе getElementOfArray() то при System.out.println(getElementOfArray()); он выводит (последний) элемент массива (что и нужно). Но если я хочу чтобы массив принадлежал объекту а не классу, и создаю объект ConnectionManagerдля доступа к массиву, то System.out.println(getElementOfArray()); выводит только null
Вопрос:
Какой создается объект, при ConnectionManager cm = new ConnectionManager();
Будет ли этот объект начинаться с psvm
Почему все-таки со статическим массивом все проходит хорошо, а при создании объекта - нет?
Спасибо огромное
public class ConnectionManager {
private Connection1[] connections = new Connection1[5]; //Массив для Connection1
private static int counter;
private void fillArray() {
for (int i = 0; i < connections.length; i++) { //Наполняет массив
connections[i] = Connection1.getInstance(); //элементами Connection1
counter++;
System.out.println(connections.getClass() + " Element added");
}
}
static Connection1 getElementOfArray(){
ConnectionManager cm = new ConnectionManager(); //Cоздание объекта
if(counter > 0){
return cm.connections[--counter];
} else {
return null;
}
}
public static void main(String[] args) {
ConnectionManager cm = new ConnectionManager();
cm.fillArray();
System.out.println(getElementOfArray());
}
}
Ответ
У вас создается два объекта ConnectionManager. В методе main один объект, а в методе getElementOfArray другой, соответственно, если массив не статический происходит обращение к разным массивам.
Т.е. метод fillArray заполняет массив другого объекта, к которому не происходит обращение.
Надеюсь, понятно объяснил =)
Комментариев нет:
Отправить комментарий