Вам просто нужно сделать convertToInt
статичным.Так как он на самом деле не полагается ни на что в экземпляре класса, он, вероятно, в любом случае не относится к этому классу.
Вот пример:
class MyClass {
public MyClass(String string) {
this(ComplicatedTypeConverter.fromString(string));
}
public MyClass(ComplicatedType myType) {
this.myType = myType;
}
}
class ComplicatedTypeConverter {
public static ComplicatedType fromString(String string) {
return something;
}
}
Вы должны сделатьэто так, потому что за кулисами супер-конструктор (в данном случае Object) должен быть вызван до запуска вашего собственного конструктора.Обращаясь к this
(через вызов метода) до того, как произойдет этот невидимый вызов super();
, вы нарушаете языковое ограничение.
См. JLS , раздел 8.8.7 и больше JLS раздел 12.5.