简而言之,有人可以告诉我这两个对象之间的区别吗,为什么一个对象可以用于另一个对象呢?
最佳答案
果壳,TL; DR版本:
您应该只引用Table
。 jOOQ的内部构件也使用TableLike
完整说明:
jOOQ的DSL充满了很少的标记接口,这仅仅是因为Java语言缺乏对联合类型的支持。例如,在SQL语法中,将Table<?>
(如CREATE TABLE x ...
)和Select<?>
(如SELECT * FROM ...
)放在FROM
子句中,则它们是同一件事。
在“理想的” Java语言中,FROM
子句将这样声明:
interface SelectFromStep {
SelectWhereStep from(Table | Select tableReference);
}
因为这是不可能的,并且由于重载和泛型类型擦除是(如)像jOOQ那样使用泛型时痛苦的重要来源,所以jOOQ具有这些标记接口。就像
TableLike
一样,这是Table
和Select
的超级类型。因此,仅作为jOOQ DSL中的方法参数类型,对于用户而言并不重要。
关于java - jOOQ中的Table <R>和<TableLike>有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36999744/