Java jOOQ生成的类的多态性发生了什么?

Java jOOQ生成的类的多态性发生了什么?,java,generics,inheritance,polymorphism,jooq,Java,Generics,Inheritance,Polymorphism,Jooq,让我们从以下方面进行查询: 选择条件步骤查询=创建 .selectAUTHOR.LASTNAME.asAuthorName 从…起 BOOK.leftOuterJoinBOOK\u AUTHOR.onBOOK.ID.eqBOOK\u AUTHOR.BOOKID .leftOuterJoinAUTHOR.onAUTHOR.ID.eqBOOK\u AUTHOR.AUTHORID .whereBOOK.ID.eq1 ; //什么时候 结果=query.fetch; 如果我尝试用SelectCondit

让我们从以下方面进行查询:

选择条件步骤查询=创建 .selectAUTHOR.LASTNAME.asAuthorName 从…起 BOOK.leftOuterJoinBOOK\u AUTHOR.onBOOK.ID.eqBOOK\u AUTHOR.BOOKID .leftOuterJoinAUTHOR.onAUTHOR.ID.eqBOOK\u AUTHOR.AUTHORID .whereBOOK.ID.eq1 ; //什么时候 结果=query.fetch; 如果我尝试用SelectConditionStep替换SelectConditionStep,我会

不兼容的类型

必需:选择ConditionStep

找到:选择条件步骤

然而

包org.jooq; 导入javax.annotation.Generated; /** *阶数为1的记录的模型类型 * *@见第1行 *@作者卢卡斯·埃德 */ @generated该类是使用jOOQ工具生成的 公共接口Record1扩展了记录{…} 所以。。。有什么好处

除非我遗漏了一些非常明显的东西,否则我不应该被允许将Record1的实例视为记录吗

是的,我开始问我自己,我需要检查我是否完全精神正常:

那只是

这也不会编译,并显示相同的错误消息:

ArrayList<Animal> x = new ArrayList<Dog>(); 
ArrayList<List<String>> x = new ArrayList<ArrayList<String>>();
您可能需要键入类似SelectConditionStep的变量,并使用通配符为 虽然您的具体问题的正确答案已经由给出了,但我相信您想要做的只是不详细说明这个中间类型的整个类型签名,因为您不需要它,而且它很乏味。您可以使用通配符:

选择条件步骤查询=。。。; 结果=query.fetch; 因为在整个jOOQ API中,类型是以记录为界的,所以这个通配符仍然隐式地以记录为界,因此原则上,上述内容与以下内容隐式相同:

改为选择条件步骤或结果查询:

选择查询=。。。; 结果=query.fetch;
令人惊讶的是,当我有一段时间没有使用它们时,我总是忘记一些非常基本的东西非常感谢。