我正在创建JOOQ TableRecord的接口(interface)

<R extends TableRecord<R>>

谁能解释以上内容?

谢谢

最佳答案

它表示类型R的类,它实现了TableRecord<R>接口(interface)
TableRecord<R>表示接口(interface)绑定(bind)到相同的类型R。

一个例子是一个像这样的类:

public class Bla implements TableRecord<Bla>

我承认这似乎有些奇怪,但是Java泛型并没有真正区分extendsimplements,这引起了一些困惑。

至于为什么要使用这个确切的定义,我对上下文的了解还不足以确切了解它为什么有意义,但这可能是由于接口(interface)上的方法签名返回了R类型的对象(认为是工厂):
public R createTableRecord(...);

10-07 16:56