在构造函数中而不是在构造函数中加载数据

时间:2010-06-08 13:19:38

标签: java constructor

我只是想知道在构造函数中加载数据和在构造函数外部加载数据之间的区别,而不是在任何方法中加载

示例:在构造函数中加载

public class Model{
   Object testobject;

   public Model(){
      testobject=new Object();
   }

}

VS

示例:加载外部构造函数

public class Model{
   Object testobject=new Object();

   public Model(){
   }

}

6 个答案:

答案 0 :(得分:4)

唯一的区别是当你有多个构造函数时,编写它可能会很乏味......

testObject = new Object();

每一个。但是如果你决定要...

public Model(Object otherObject) {
    testObject = otherObject;
}

如果你宣布两次,你会做更多的工作。

答案 1 :(得分:3)

实际上存在一个小差异(但可能太明显无法注意到)。自动初始化(在调用它时使用外部构造函数)在构造函数之前执行。只是执行顺序问题......

答案 2 :(得分:3)

它影响初始化的顺序。初始化程序在构造函数的主体之前执行。在一个像你的例子这样简单的情况下,这并不重要,但可能是更复杂的代码。

另一个区别是,如果需要,您可以在构造函数内处理异常。

答案 3 :(得分:1)

字节代码级别没有(实际)差异。这更像是编码风格的问题。

Bozho对similar question here给出了一个很好的答案。

答案 4 :(得分:1)

它们基本相同。 声明中的初始化:一个小优点是您不必担心多个构造函数。另一方面,您的灵活性稍差,特别是如果您需要一些逻辑或异常处理。

http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html

答案 5 :(得分:1)

字段初始化发生在构造函数中的行执行之前。如果在调试器中运行程序并进入Model的构造函数,则可以看到这一点。

这里有几个链接讨论何时调用静态,静态块,字段,成员初始化块和构造函数: