У меня есть абстрактный класс, который имеет общий метод, и я хочу переопределить общий метод, заменив определенные типы для общего параметра. Поэтому в псевдокоде у меня есть следующее:
public abstract class GetAndParse {
public SomeClass var;
public abstract <T extends AnotherClass> void getAndParse(T... args);
}
public class Implementor extends GetAndParse {
// some field declarations
// some method declarations
@Override
public <SpecificClass> void getAndParse(SpecificClass... args) {
// method body making use of args
}
}
Но почему-то мне не разрешают это делать? Я делаю какую-то синтаксическую ошибку или это наследование и переопределение недопустимы? В частности, я получаю сообщение об ошибке @Override
, потому что среда eclipse продолжает напоминать мне о внедрении getAndParse
.
Вот как я хочу, чтобы приведенный выше код работал. Где-то еще в моем коде есть метод, который ожидает экземпляры объектов, которые реализуют getAndParse
, что конкретно означает, что у них есть метод getAndParse
, который я могу использовать. Когда я вызываю getAndParse
в этом экземпляре, компилятор проверяет, правильно ли я использовал конкретные экземпляры T
, поэтому в частности T
должен расширять AnotherClass
и должен быть SpecificClass
.