我知道我们可以使用this关键字从同一个类的另一个构造函数中调用构造函数。但是在某种程度上可以在默认构造函数中调用参数构造函数而不使用this
吗?
我试过了:
class Example
{
int x;
public Example()
{
Example obj = new Example(2);
}
public Example(int x)
{
this.x = x;
}
}
但是这不允许我通过参数构造函数为x
赋值,除非我使用getter方法从obj对象获取值。有没有办法通过只调用参数构造函数而不使用它来为x
赋值?
如果不是那么为什么?
为什么我们不能这样做?
Example(2);
答案 0 :(得分:4)
不,你不能。
引用JLS section 8.8.7:
构造函数通过涉及
this
的一系列一个或多个显式构造函数调用直接或间接调用自身,这是一个编译时错误。
你必须写:
public Example()
{
this(2); // or this.x = 2
}