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