我正在查看一些具有以下形式的 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”子类。这听起来对吗?
无论如何,只是想知道是否有专家以前见过这个并知道它的作用。
谢谢!
最佳答案
在 C++ 中,它被称为 Curiously Recurring Template Pattern (CRTP)。我不知道它在 Java 中是否有不同的名称(或者即使它有名称),但它可能用于类似的目的。
关于java - 这个 Java 泛型范例是做什么的,它叫什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382915/