Я пытаюсь создать набор, в котором набор подклассов переопределяет суперкласс. Этот суперкласс содержит абстрактный метод, тип возвращаемого значения которого в идеале должен соответствовать объекту, из которого был вызван этот метод, так что он эффективно ведет себя так:
public abstract class SuperClass{
public abstract SuperClass getSelf();
}
public class SubClass extends SuperClass{
@Override
public SubClass getSelf(){
return this;
}
}
Я не уверен, что такая возможность возможна, так как я думаю, что типы возвращаемых данных всегда должны быть одинаковыми, чтобы переопределение работало - однако я думал, что ответ, если таковой существует, лежит где-то вдоль этой линии. ..
public abstract class SuperClass{
public abstract <? extends SuperClass> getSelf();
}
public class SubClass extends SuperClass{
@Override
public SubClass getSelf(){
return this;
}
}
Спасибо за любую помощь.
edit: добавлено расширение Суперкласса до SubClass, да