Во-первых, вы уверены, что ваши конструкторы не выходят из-под контроля?
Если вы намерены (на данный момент) перейти ко многим корням конструктора, то вы можете вызывать одного конструктора из другого. Должна быть первой строкой конструктора, использующего синтаксис this();
, который заменяет неявный или явный super();
.
public A(Object obj, String prop1Str, String prop2Str) {
this(obj, obj, prop1Str, prop2Str);
}
public A(Object obj1, Object obj2, String prop1Str, String prop2Str) {
// ...
}
Конечно, вы можете преобразовывать аргументы, используя более сложные выражения вместо простого переданного аргумента. Например:
public A(Object obj, Object prop1Obj, String prop2Str) {
this(obj, maskNull(obj), String.valueOf(prop1Str), prop2Str);
}
Конструкторы предназначены для инициализации объекта в допустимое состояние. Для более сложной обработки вы можете добавить статический метод создания. Этот метод может даже иметь имя, означающее, что он указывает на то, что он делает.