我以前从未需要过这样做,但由于两者都必须是构造函数中的“第一”行,应该如何解决?在这种情况下,最好的重构方法是什么?
下面是一个示例:
public class Agreement extends Postable {
public Agreement(User user, Data dataCovered)
{
super(user);
this(user,dataCovered,null);
}
public Agreement(User user,Data dataCovered, Price price)
{
super(user);
if(price!=null)
this.price = price;
this.dataCovered = dataCovered;
}
...
}
调用super(user)
是绝对必要的。在这种情况下如何处理“可选参数”?我能想到的唯一方法是重复,即根本不调用this(...)。只需在每个构造函数中执行赋值操作。
super(user)
,你可以通过调用this(user, dataCovered, null)
来调用它。 - Eng.Fouad