简而言之,有人可以告诉我这两个对象之间的区别吗,为什么一个对象可以用于另一个对象呢?

最佳答案

果壳,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一样,这是TableSelect的超级类型。

因此,仅作为jOOQ DSL中的方法参数类型,对于用户而言并不重要。

关于java - jOOQ中的Table <R>和<TableLike>有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36999744/

10-12 23:36