有人可以简单地告诉我这两个对象之间的区别以及为什么可以使用另一个对象?
答案 0 :(得分:1)
您应该只引用Table
。 jOOQ的内部也使用TableLike
jOOQ的DSL充满了小标记接口,只是因为Java语言缺乏对联合类型的支持。例如,在SQL语法中,Table<?>
(如CREATE TABLE x ...
)和Select<?>
(如SELECT * FROM ...
)是相同的东西,当你把它放在FROM
条款。
在“理想的”Java语言中,FROM
子句将被声明为:
interface SelectFromStep {
SelectWhereStep from(Table | Select tableReference);
}
因为这是不可能的,并且因为当(ab)使用像jOOQ这样的泛型时,重载和泛型类型擦除是痛苦的重要来源,所以jOOQ具有这些标记接口。与TableLike
类似,后者是Table
和Select
的超类型。
因此,仅作为jOOQ DSL中的方法参数类型非常重要,而不是作为用户。