Скажем, у меня есть абстрактный универсальный класс:Вызов функции Generic Java на абстрактном уровне
public abstract class QuestionObject<T extends Answerable<?>> {
public abstract T returnAnswerable();
public abstract void renderQuestionLayout(T answer);
}
и сопутствующий общий класс, чтобы пойти с ним:
public interface Answerable<T> {
...
}
У меня есть куча подклассов расширить QuestionObject и иметь свой собственный ответ. Так, например, TrueFalseQuestion будет объявлен с TrueFalseAnswer:
public class TrueFalseQuestion extends QuestionObject<TrueFalseAnswer> {
...
}
Давайте пилой я хочу вызвать метод renderQuestionLayout на уровне QuestionObject. Это возможно? Что-то вроде:
QuestionObject<?> q = getCurrentQuestion();
Answerable<?>a = getAnswer();
q.renderQuestionLayout(a);
не работает.
Я полагал, что это может быть ответом (явно литье). Считаете ли вы, что это пример плохого дизайна? Как выглядит редизайн? Спасибо. – IcedDante
Ну, если у вас слишком много подклассов, выполнение приемов повсюду может стать довольно неприятным. Мое предложение состояло бы в том, чтобы использовать какую-либо фабрику для получения экземпляров конкретного подкласса, который вам нужен. – yamafontes