繁体   English   中英

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

[英]Call parameter constructor from default constructor without using this keyword

我知道我们可以使用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 第8.8.7节

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

您必须写:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM