Я хочу создать новый экземпляр в зависимости от объекта, где у меня есть переменная суперкласса. Возможно ли это без реализации функции getNew() или без использования уродливой if-цепи? Другими словами: Как реализовать следующую функцию newSubClass (..) без использования функции getNew()?java polymorphism, создающий новый объект подкласса, используя переменную суперкласса
public abstract class SuperClass {
abstract public SuperClass getNew();
}
public class SubClassA extends SuperClass {
@Override
public SuperClass getNew() {
return new SubClassA();
}
}
public class SubClassB extends SuperClass {
@Override
public SuperClass getNew() {
return new SubClassB();
}
}
private SuperClass newSubClass(SuperClass superClass) {
return superClass.getNew();
}
Полиморфизм - это самое чистое решение этой проблемы, и вы уже реализовали его. Когда Java Reflection является решением, я очень сильно сомневаюсь, действительно ли это. Отражение обходит систему типов и делает статический анализ и автоматический рефакторинг более сложными или непрактичными. Сохранение кода плохо сбалансировано с потерей рефакторинга. Код в основном ценен для бизнеса за его способность меняться в соответствии с новыми требованиями, а не в его способности быть короткими. –