Я смотрю на некоторые классы Java, которые имеют следующую форму:
public
abstract
class A <E extends A<E>> implements Comparable <E> {
public final int compareTo( E other ) {
// etc
}
}
public
class B extends A <B> {
// etc
}
public
class C extends A <C> {
// etc
}
Мое использование "Comparable" здесь просто для иллюстрации возможного использования универсального параметра "E". У этого использования дженериков / наследования есть имя? Для чего он используется?
У меня сложилось впечатление, что это позволяет абстрактному классу предоставлять общую реализацию метода (например, CompareTo) без необходимости предоставлять его в подклассах. Однако в этом примере, в отличие от унаследованного метода, он будет ограничивать подклассы вызовом CompareTo для других экземпляров того же подкласса, а не для любого подкласса "A". Это звучит правильно?
В любом случае, просто любопытно, видел ли кто-нибудь гуру это раньше и знает, что он делает.
Спасибо!