от
У меня есть универсальный класс, который выглядит как:
public abstract class Foo> {...
и другой класс, который выглядит так:
public abstract class Fum, U extends Foo> {...
и, наконец, некоторые подклассы, которые выглядят как:
public class SubFoo extends Foo {...

public class SubFum extends Fum {...
В абстрактных классов, есть несколько абстрактных методов, объявленных
public abstract T create();
(с перегруженных версий), которые несут ответственность за создание экземпляров объектов подкласса используемых методов суперкласса'. Однако, я, очевидно, не может просто написать
new U()
в
Fum
, чтобы получить экземпляр
SubFoo
, поэтому я хочу, чтобы некоторые статические способ-прототип, который я могу переопределить. Однако, очевидно, что я не могу писать
public static abstract T create();
из-за какой причины я не могу понять. Поэтому я написал метод в
Fum
, который выглядит как:
@SuppressWarnings("unchecked")
protected static > V newSubFoo() {
    try {//create() requires a constructed object to work.
        return (V) Foo.class.asSubclass(Foo.class).newInstance().create();
    } catch (InstantiationException | IllegalAccessException e) {
        e.printStackTrace();
        System.exit(1);
        return null;
    }//I don't expect this to work, but I don't know what to use before 
}   // the "asSubClass" call.
который сумел заставить компилятор замолчать. Однако, это не будет получать меня в любом месте. В заключение: есть ли способ, чтобы создать новый объект типа
U
в
Fum
, используя статический метод, который может быть переопределен в
SubFoo
(желательно без написания пустой конструктор в
Foo
)?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
...