日期:2014-05-20  浏览次数:20647 次

Java对象初始化的问题
各位大神们,我想知道我对一个类的对象进行初始化,目前是用的A a = null; 然后a会用一个返回该类型变量的函数进行赋值,比如a = returnA(); 这样。我想知道这样的方法安全吗?因为我之后还要将得到的a传递给其他函数,如果那个赋值的函数出错了,是不是会有异常?问题:我是不是应该用A a = new A();来初始化,然后再赋值好点呢?两者有什么优缺点
------解决方案--------------------
先A a = new A();
再 a = returnA();
这样就直接产生了一个垃圾实例 new  A();
这个对象直接产生出来,然后就又没什么用了,浪费内存空间。

就直接使用第一种方式吧。
A a =null;
然后 a = returnA();


------解决方案--------------------
先A a = new A();
再 a = returnA();

即使你这样写,returnA如果返回null的话,你的a还是会为null,后面的程序还是出错。

另外一方面,如果 returnA返回null的话,你应该校验一下,后续的程序本来就不需要进行下去了


------解决方案--------------------
两种方法都可以。回顾一下单例化实现,就是一个主动初始化,一个惰性初始化的区别。
如果想取消null带来的不便,可以使用NULL OBJECT 模式。