Дженерики Java - переопределение абстрактного метода и наличие возвращаемого типа подкласса

Я пытаюсь создать настройку, в которой набор подклассов переопределяет суперкласс. Этот суперкласс содержит абстрактный метод - возвращаемый тип которого в идеале должен быть типом объекта, из которого был вызван этот метод, так что он эффективно ведет себя следующим образом:

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: added расширяет SuperClass на SubClass, да

15
задан Numeron 23 June 2011 в 07:42
поделиться