2013-11-20 2 views
0

У меня есть объект obj типа MyObject, который я объявляю экземпляром.Инициализация/декларация объектов Java

MyObject obj; 

Однако, я не инициализирую его. Класс MyObject выглядит примерно так:

public class MyObject { 
    public String i; 
    public String j; 
    public MyObject(String i) { 
     i = this.i; 
    } 
} 

Итак, теперь я хочу установить значение j. Поэтому я говорю:

obj.j = "Hello"; 

Могу ли я сделать это без инициализации объекта? то есть, не говоря:

obj = new MyObject("My i"); 

Будет ли этот объект будет нулевым, если бы я, чтобы проверить значение этого, если я не инициализировать его, или устанавливая поле внутри него достаточно, чтобы сделать это не пустой?

Спасибо!

+0

Ваше заявление конструктора обратное. Он должен сказать 'this.i = i;' – stackular

ответ

3

Нет, вы не можете этого сделать. Вам нужно будет создать новый экземпляр MyObject, если вы хотите получить доступ к его полям.

Если вы не делаете поля static, конечно.

Обратите внимание, что наличие полей public нарушает инкапсуляцию. Вы должны сделать их частными (или protected, если это уместно) и использовать геттеры и сеттеры для обеспечения доступа.

Sidenote:

public MyObject(String i) { 
    i = this.i; 
} 

Это не будет делать то, что вы хотите.

Вы должны назначить параметр i переменной поля i, а не наоборот.

+0

Спасибо! Я буду принимать ваш ответ, как только мне позволено ... –

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