【问题标题】:What does <R extends TableRecord<R>> mean in Java?<R extends TableRecord<R>> 在 Java 中是什么意思?
【发布时间】:2013-09-24 09:11:59
【问题描述】:

我正在创建JOOQ的接口TableRecord

<R extends TableRecord<R>> 

谁能解释一下上面的那一行?

谢谢

【问题讨论】:

标签: java jooq


【解决方案1】:

表示一个R类型的类,实现了接口TableRecord&lt;R&gt;

TableRecord&lt;R&gt;表示接口绑定了同一个类型的R。

一个例子是这样的类:

public class Bla implements TableRecord<Bla>

我承认这看起来有点奇怪,但 Java 泛型并没有真正区分 extendsimplements,这会导致一些混乱。

至于为什么这个确切的定义,我对上下文的了解不够,无法确切了解它为什么有意义,但这可能是由于接口上的方法签名返回R 类型的对象(想想工厂):

public R createTableRecord(...);

【讨论】:

  • 但是在这个 '> ' 它扩展它意味着 'R' 是一个类?
  • 我认为 R 不必与实现类的类型相同 (more reading).
  • @subodh 表示 R 是一个“类型”,因为 TableRecord 是一个接口,所以 R 也可以是一个接口。
【解决方案2】:
class SomeClass<R extends TableRecord<R>>

这意味着参数类型R 必须是TableRecord &lt;R&gt; 的子类,仅此而已,即您必须使用类

class Foo extends TableRecord <Foo>

作为定义你的类的参数SomeClass

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 2022-12-08
    • 1970-01-01
    • 2014-05-16
    • 2011-02-10
    • 2014-08-23
    • 2016-09-17
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多