<R扩展TableRecord >在Java中意味着什么?
我正在创建JOOQ TableRecord的接口
<R extends TableRecord>
有人能够解释上面的这一行吗?
谢谢
它表示一个类型为R的类,它实现了接口TableRecord
TableRecord
表示接口绑定到相同的类型R.
一个例子是类:
public class Bla implements TableRecord
我承认这看起来有点奇怪,但Javagenerics并没有真正区分extends
和implements
,这导致一些混乱。
至于为什么这个确切的定义,我对上下文的了解不足以确切了解为什么它有意义,但它可能是由于接口上的方法签名返回R
类型的对象(想想Factory):
public R createTableRecord(...);
class SomeClass>
这意味着参数类型R
必须是TableRecord
的子类,没有别的,即你必须使用类
class Foo extends TableRecord
作为定义类SomeClass
的参数