#java
Разбираюсь в 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()); } }
Ответы
Ответ 1
У вас создается два объекта ConnectionManager. В методе main один объект, а в методе getElementOfArray другой, соответственно, если массив не статический происходит обращение к разным массивам. Т.е. метод fillArray заполняет массив другого объекта, к которому не происходит обращение. Надеюсь, понятно объяснил =)Ответ 2
У тебя массив не заполняется. Здесь ты создаешь объект и заполняешь в нем массив: public static void main(String[] args) { ConnectionManager cm = new ConnectionManager(); cm.fillArray(); System.out.println(getElementOfArray()); } А здесь ты создаешь новый объект и ничего в нем не заполняешь: static Connection1 getElementOfArray(){ ConnectionManager cm = new ConnectionManager(); //Cоздание объекта if(counter > 0){ return cm.connections[--counter]; } else { return null; } }
Комментариев нет:
Отправить комментарий