从参数化构造函数调用高级构造函数的好样式?

时间:2011-12-19 08:40:48

标签: java design-patterns coding-style

我正在与一些同事讨论Java构造函数,设计模式以及使用非参数化构造函数初始化对象的好方法,如果我通常等待一些参数。

其中一个较老的人想出了类似的方法:

public class Foo {

public Foo() {
this(0,0,0);
}

public Foo(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
..
}

我的问题是,这种风格是好的,它的行为究竟是什么?

据我理解应该是:

  • 首先实例化一个Object,然后调用参数化构造函数,用该参数设置构造该类型的新对象,并设置自己对新参考的引用。因此,GC必须删除第一个创建的。

2 个答案:

答案 0 :(得分:6)

So the GC has then to delete the first created one.

没有。链接构造函数时只创建了一个实例。

回答你的问题,是的,这是好的风格,假设你需要foo()foo(int, int, int)

答案 1 :(得分:6)

这称为Telescoping Constructor pattern。在Effective Java中,Joshua向alternatives提供了关于在何时使用的建议。