为什么从构造函数中调用方法被认为是不好的做法?

时间:2013-08-21 04:20:11

标签: java

在Java中,为什么从构造函数中调用方法被认为是不好的做法?如果这个方法计算量很大,那会特别糟糕吗?

2 个答案:

答案 0 :(得分:6)

构造函数应该只调用private,static或final方法。这有助于摆脱Overriding可能出现的问题。

此外,构造函数不应该启动线程。在构造函数(或静态初始化程序)中启动线程有两个问题:

  • 在非最终类中,会增加子类出现问题的危险
  • 它打开了允许此引用转义构造函数的大门

在构造函数(或静态初始化程序)中创建线程对象没有任何问题 - 只是不要在那里启动它。

答案 1 :(得分:4)

在构造函数中调用实例方法很危险,因为对象尚未完全初始化(这主要适用于可被覆盖的方法)。此外,已知构造函数中的复杂处理会对测试能力产生负面影响。

在做的时候要小心,不好的做法是使用覆盖方法。