但是用的时候,我看一般都倾向与
这样用
即先构造,然后再初始化
A a = new A()
a.initValue(new Object());
而不是
A a= new A(Object value);
为何一般采取第一种选择呢?
...全文
15418打赏收藏
为何构造函数中少作事情好呢?
例如有个类 Class A { public A() { } public A(Ojbect value) { initValue(); } public void initValue(Ojbect value) { } } 但是用的时候,我看一般都倾向与 这样用 即先构造,然后再初始化 A a = new A() a.initValue(new Object()); 而不是 A a= new A(Object value); 为何一般采取第一种选择呢?
thinking in java第七章中讲构造器内部的多态方法行为时讲到过编写构造器的时候有一条有益原则:尽可能用简单的方法使对象进入正常状态,如果可以得话,避免调用其他方法。在构造器唯一能能够安全调用的那些方法是基类(父类)中的final方法。
这是因为当构造器中有多态方法时的构造器调用方法与一般方法不同,为了避免这种调用方法的不安全性而定的。这与楼主的“不要让构造器做太多事”是否有关有待查证……