我偶然发现了以下代码:
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()]);
是否正在调用同一个类的另一个重载构造函数?
答案 0 :(得分:1)
是的,这只是调用另一个构造函数。这在Java中很常见,您可以将其称为“构造函数委派”。
实际上有两种委托,this
(调用当前类的构造函数)和super
(调用超类的构造函数)。它们是互斥的,必须显示为构造函数的第一个语句。
答案 1 :(得分:1)
是的,确切地说。它与在C ++中提供参数的默认值基本相同(从结果的角度来看)。