Мне никогда не приходилось делать это раньше, но, поскольку обе должны быть «первой» строкой в конструкторе, как с этим бороться? Какой лучший рефакторинг для такой ситуации?
Вот пример:
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)
абсолютно необходим. Как бороться с «необязательными параметрами» в этом случае? Единственный способ, которым я могу думать, - это повторение, то есть вообще не называть это (...). Просто выполняйте задания в каждом конструкторе.