2015-01-24 3 views
0

Я пытаюсь передать объекты с помощью метода getter и setter. Он работает, когда я использую System.out.println («test:» + this.admin); но я не могу получить объекты, когда я вызываю System.out.println («ПОЧЕМУ ВЫ НЕ РАБОТАЕТ ?!» + getAdmin());Значение Getter возвращает null Java

Вот результат работы программы:

test: [email protected] 

WHY YOU ARE NOT WORKING?! null 

Панель администратора Мастер панели страницы

public class AdminMasterPanel extends JPanel { 

    protected JFrame myFrame; 

    private Admin admin; 


    public Admin getAdmin() { 
     return admin; 
    } 

    public void setAdmin(Admin admin) { 
     this.admin = admin; 
     System.out.println("test: "+this.admin); 
    } 


    /** 
    * Create the panel. 
    */ 
    public AdminMasterPanel(JFrame mf) { 

     // Set the frame to the program 
     myFrame = mf; 
     setLayout(null); 
     setBounds(0, 0, 1280, 720); 

     System.out.println("WHY YOU ARE NOT WORKING?! "+getAdmin()); 


    } 
} 

Вызов метода setAdmin из другого класса, чтобы установить объекты администратора:

AdminMasterPanel amp = new AdminMasterPanel(null); 
amp.setAdmin(admin); 
+1

Вы говорите, что вывод конструктора появляется * после * вывода из сеттера? –

+1

Программа make getAdmin() в конструкторе, поэтому перед вызовом setAdmin() – Hacketo

+0

Нет, я имею в виду, что я продолжаю получать null, когда я вызываю его из конструктора. – Minelava

ответ

1

Потому что вы звоните getAdmin() до setAdmin(). Ваш конструктор даже не получает объект Admin. Таким образом, вы в основном ничего не называете getAdmin().

То, что вы TODO это:

public AdminMasterPanel(JFrame mf, Admin admin) { 

    // Set the frame to the program 
    myFrame = mf; 
    setLayout(null); 
    setBounds(0, 0, 1280, 720); 
    this.admin = admin; 
    System.out.println("WHY YOU ARE NOT WORKING?! "+getAdmin()); 
} 

Или так кажется, что вы хотите установить администратор с помощью метода объекта setAdmin(). Вы должны удалить Sysout в своем конструкторе.

+0

Это тоже хорошо работает :) – Minelava

+0

@Minelava Обратите внимание, что вы можете голосовать только за одно решение. Поэтому я советую вам принять решение, которое поможет вам лучше всего. – user3437460

0

Так вот в чем проблема.

private Admin admin; 

Администратор не инициализирован нигде, поэтому его значение по умолчанию равно null. Поскольку вы вызывали getAdmin() внутри конструктора, он выполняется до вызова setAdmin(admin).

So getAdmin() возвращает null.

1

где ваш конструктор классов для инициализации всех переменных?

Если вы хотите выйти из конструктора, по крайней мере, сделать это:

private Admin admin = new Admin(); 

Причина вы получаете nullPointerException потому, что вы пытаетесь получить доступ к не-существующий объект.


Краш курс по классам & объекты:

Admin admin; //Doing this DOES NOT create an object 

выше, не создает какой-либо объект Admin. То, что он делает, это создать ссылку, которая указывает на ничего (null).

Вы создаете объекты только при использовании ключевого слова new.

new Admin(); //Create an Admin Object 

Admin admin = new Admin(); //Create an Admin object and reference it with a variable named "admin". 
+0

Омг спасибо большое – Minelava

+0

@ Минелава Добро пожаловать;) – user3437460

Смежные вопросы