2013-11-20 116 views
0

我有一个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吗?即不用说:

obj = new MyObject("My i"); 

将这个对象为空,如果我要检查它的价值,如果我不初始化它,或者是设置在其中一个领域足以令它不为空?

谢谢!

+0

您的构造函数语句是反向的。应该说'this.i = i;' – stackular

回答

3

不,你不能那样做。如果您想访问其字段,则必须创建一个新的MyObject实例。

除非你使领域static,ofcourse。

请注意,有您的字段public违反封装。您应该将它们设为私有(或适用protected),并使用getter和setter来提供访问权限。

旁注:

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

这不会做你想做的。

您必须将参数i分配给字段变量i,而不是相反。

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

谢谢!一旦我被允许,我会接受你的答案... –