Я столкнулся со следующей ситуацией на работе, и я ищу лучшее решение.Существует BaseClass
, и одно из его полей объявлено типа FieldBaseClass
.Поле создается в дочерних классах и имеет динамический тип FieldChildClass
.Я хочу написать метод получения для поля, которое возвращает экземпляр дочернего класса (FieldChildClass
), а не родительского.Как я могу добиться этого без необходимости приведения типа?
Я попытался поместить getter в дочерний класс и привести тип возвращаемого значения к определенному дочернему классу, но это выглядит ужасно.
BaseClass.java
public class BaseClass {
protected FieldBaseClass field;
public BaseClass() {
field = calculateFieldValue();
}
public static class FieldBaseClass {
protected String bar = "bar";
}
}
ChildClass.java
public class ChildClass extends BaseClass {
public FieldChildClass calculateFieldValue() {
return new FieldChildClass("foo");
}
public static class FieldChildClass extends FieldBaseClass {
private String foo;
public FieldChildClass(String foo) {
this.foo = foo;
}
}
public FieldChildClass getField() {
return (FieldChildClass) field;
}
}