jOOQ with java 15:org.jooq 中的接口 org.jooq.Record 和 java.lang 中的类 java.lang.Record 匹配

Ynv*_*Ynv 3 java jooq java-record java-15

我刚刚尝试将我的项目升级到 Java 15,现在出现以下错误:

  both interface org.jooq.Record in org.jooq and class java.lang.Record in java.lang match
Run Code Online (Sandbox Code Playgroud)

有没有人有解决这个问题的经验?

Luk*_*der 6

除了Aniket 已经说过的

按需导入不再适用于 Record

建议在您的按需导入语句中添加显式导入:

import org.jooq.*;
import org.jooq.Record;
Run Code Online (Sandbox Code Playgroud)

或者完全停止使用按需导入。例如,在 Eclipse 中,您可以使用“组织导入”功能将所有按需导入语句扩展为显式导入,具体取决于您实际使用的类型。

使用类型推断

如果局部变量发生此问题,另一种防止此问题的方法是使用var

var record = ctx.fetchOne(TABLE, TABLE.ID.eq(1));
Run Code Online (Sandbox Code Playgroud)

现在您不必导入类型。当然,这不适用于成员类型、方法参数和返回类型。

我们将尝试更好地记录这一点:https : //github.com/jOOQ/jOOQ/issues/10646


Ani*_*wat 5

Java 14 引入了记录java.lang.Record是一个与record它冲突的超类,org.jooq.Record因为其中的每个类型java.lang都是自动导入的。有两种解决方案:

  1. 使用完全限定名称代替Record并删除导入。例如:org.jooq.Record而不是Record. (不要忘记删除import语句)。
  2. 将 重新声明org.jooq.Record为特定的东西。(我认为在您的情况下这是不可能的,因为它是第三方库。)