JOOQ TableRecordのインターフェースを作成しています
<R extends TableRecord<R>>
上記の行を説明できる人はいますか?
ありがとう
インターフェースを実装するタイプRのクラスを意味しますTableRecord<R>
TableRecord<R>
インターフェイスが同じ型 R にバインドされていることを意味します。
例は次のようなクラスです。
public class Bla implements TableRecord<Bla>
これは少し奇妙に思えるかもしれませんが、Java ジェネリックは と を実際には区別しないextends
ためimplements
、混乱が生じます。
この正確な定義の理由については、コンテキストについて十分に理解していないため、それが理にかなっている理由を正確に確認できませんが、タイプのオブジェクトを返すインターフェイスのメソッド シグネチャが原因である可能性がありますR
(Factory を考えてください)。
public R createTableRecord(...);
class SomeClass<R extends TableRecord<R>>
パラメータの型R
がサブクラスでなければならないことの意味は何ですかTableRecord <R>
。つまり、クラスを使用する必要があります
class Foo extends TableRecord <Foo>
クラスを定義するためのパラメーターとしてSomeClass