加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

这个Java泛型范例做了什么以及它叫做什么?

发布时间:2020-12-15 03:04:58 所属栏目:Java 来源:网络整理
导读:我正在看一些具有以下形式的 Java类: public abstractclass A E extends AE implements Comparable E { public final int compareTo( E other ) { // etc } }public class B extends A B { // etc}public class C extends A C { // etc} 我在这里使用“可比
我正在看一些具有以下形式的 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
}

我在这里使用“可比较”只是为了说明通用参数“E”的可能用途.泛型/继承的这种用法是否有名称?它是干什么用的?

我的印象是,这允许抽象类提供方法的通用实现(例如compareTo),而不必在子类中提供它.但是,在此示例中,与继承方法不同,它会限制子类在同一子类的其他实例上调用compareTo,而不是任何“A”子类.这听起来不错吗?

无论如何,只是好奇,如果有任何大师之前已经看过这个,并知道它做了什么.

谢谢!

解决方法

在C中,它被称为 Curiously Recurring Template Pattern(CRTP).我不知道它在Java中是否有不同的名称(或者即使它有一个名称),但它可能用于类似的目的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读