5

我正在创建JOOQ TableRecord的接口

<R extends TableRecord<R>> 

任何人都可以解释上面的行吗?

谢谢

4

2 回答 2

7

它意味着一个 R 类型的类,它实现了接口TableRecord<R>

TableRecord<R>表示接口绑定到同一个类型R。

一个例子是这样的类:

public class Bla implements TableRecord<Bla>

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

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

public R createTableRecord(...);
于 2013-09-19T10:23:38.040 回答
4
class SomeClass<R extends TableRecord<R>>

这意味着参数类型R必须是一个子类,TableRecord <R>而不是别的,即你必须使用类

class Foo extends TableRecord <Foo>

作为定义类的参数SomeClass

于 2013-09-19T10:26:44.720 回答