从重载的构造函数调用`this`

时间:2014-11-28 21:18:58

标签: java

我偶然发现了以下代码:

public class PluginResult {

    public PluginResult(Status status) {
        this(status, PluginResult.StatusMessages[status.ordinal()]); //this line
    }

    public PluginResult(Status status, String message) {
        this.status = status.ordinal();
        this.messageType = message == null ? MESSAGE_TYPE_NULL : MESSAGE_TYPE_STRING;
        this.strMessage = message;
    }

我想知道它在这一行上做了什么:

this(status, PluginResult.StatusMessages[status.ordinal()]);

是否正在调用同一个类的另一个重载构造函数?

2 个答案:

答案 0 :(得分:1)

是的,这只是调用另一个构造函数。这在Java中很常见,您可以将其称为“构造函数委派”。

实际上有两种委托,this(调用当前类的构造函数)和super(调用超类的构造函数)。它们是互斥的,必须显示为构造函数的第一个语句。

答案 1 :(得分:1)

是的,确切地说。它与在C ++中提供参数的默认值基本相同(从结果的角度来看)。