【发布时间】:2014-04-29 03:46:24
【问题描述】:
我知道有几种方法可以在 Java 中创建实例时初始化内容,但我对以下两种可能性之间的区别感兴趣。
案例一:
{
// common init code for all constructors
}
public MyType() {
super();
// specific init code
}
public MyType(Object arg) {
super(arg);
// specific init code
}
案例 2:
public MyType() {
super();
init();
// specific init code
}
public MyType(Object arg) {
super(arg);
init();
// specific init code
}
private void init() {
// common init code for all constructors
}
我相信这两种情况在代码方面是等价的。我认为第一个更快,因为方法调用少了 1 个,但另一方面,对于那些对初始化不太了解的人来说,这可能会让人感到困惑。
是否还有我错过的另一个差异可能导致我们选择一个而不是另一个? 我应该首选哪个选项?
注意: init() 方法是私有的,我知道不同的可见性可能会导致初始化错误(子类化时),这不是重点。
【问题讨论】:
标签: java initialization