Страницы

Поиск по вопросам

среда, 17 октября 2018 г.

Создание объекта класса внутри него же самого

Добрый день. Разбираюсь в 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 заполняет массив другого объекта, к которому не происходит обращение.
Надеюсь, понятно объяснил =)

Комментариев нет:

Отправить комментарий