在枚举中调用超类型构造函数之前无法引用Const.getText

时间:2019-05-15 08:52:46

标签: java

从默认构造函数中调用带有参数的构造函数时会出错,但是直接从默认构造函数中调用getText()方法可以正常工作。

我怀疑它与构造函数的调用顺序有关。


public enum Const {
    VALUE1,
    VALUE2;

    private final String text;

    Const() {
        //this(getText()); --> gives error - Cannot reference Const.getText before super type constructor has been called in enum
        this.text = getText();
    }

    Const(final String text) {
        this.text = text;
    }

    private String getText() {
        return "x";
    }

}

1 个答案:

答案 0 :(得分:0)

如果要使用this()链接构造函数。它应该是构造函数主体的第一行。

Const() {
this(param1); 
//Rest of the code...
}