<R扩展TableRecord >在Java中意味着什么?

我正在创建JOOQ TableRecord的接口

<R extends TableRecord> 

有人能够解释上面的这一行吗?

谢谢

它表示一个类型为R的类,它实现了接口TableRecord

TableRecord表示接口绑定到相同的类型R.

一个例子是类:

 public class Bla implements TableRecord 

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

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

 public R createTableRecord(...); 
 class SomeClass> 

这意味着参数类型R必须是TableRecord 的子类,没有别的,即你必须使用类

 class Foo extends TableRecord  

作为定义类SomeClass的参数