Java 从默认构造函数调用参数构造函数而不使用此关键字

Java 从默认构造函数调用参数构造函数而不使用此关键字,java,constructor,Java,Constructor,我知道我们可以使用this关键字从同一类的另一个构造函数调用构造函数。但是不使用this,是否可以从默认构造函数中调用参数构造函数 我试过: class Example { int x; public Example() { Example obj = new Example(2); } public Example(int x) { this.x = x; } } 但这不允许我通过参数构造函数为

我知道我们可以使用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); 
不,你不能

引用JLS:

构造函数通过一系列涉及此
的一个或多个显式构造函数调用直接或间接调用自身是编译时错误

你必须写:

public Example()
{
     this(2); // or this.x = 2
}

你的实际问题是什么?你想做什么?我们的教授让我们想一想。如果我们可以在不使用“this”的情况下从另一个构造函数中调用构造函数。你可以使用某种
初始化
方法,所有构造函数都会调用它,但是你不能有
final
字段,所以我不推荐它。那么最好考虑一下,而不是要求它,因为没有其他方法可以从默认构造函数调用构造函数?为什么这是一个编译时错误?@HamzaBinAmin问自己,这样做真的有意义吗?构造函数的要点是创建一个新实例。不创建多个子实例。但类似于示例(2)的内容不应该与此(2)相同吗?@HamzaBinAmin好吧,应该是这样的,但不是使用类名,而是使用
this
关键字。在本例中,只有语法不同,在Java中,选择了后者。不过,我还是有点困惑。我们所说的“一系列涉及此的显式调用”是指使用此函数的构造函数彼此调用吗?因为在这种情况下,我只想通过默认值调用参数1,所以为什么会导致编译时错误?