gpt4 book ai didi

kotlin 字段 foo 和 isFoo 冲突 : The following declarations have the same JVM signature

转载 作者:行者123 更新时间:2023-12-02 16:12:09 26 4
gpt4 key购买 nike

data class Bar(
var foo: String = "",
var isFoo: String = ""
)

编译器报错:

平台声明冲突:以下声明具有相同的 JVM 签名 (setFoo(Ljava/lang/String;)V):public final fun ( : String?): Unit 在 com.example.Bar 中定义public final fun ( : String?): com.example.Bar 中定义的单元

如何提示编译器使用 setter 的原始字段名称? (setFoo 和 setIsFoo)注意:代码是由jooq(从数据库模式)生成的,因此手动更改代码不是一个好方法

最佳答案

你需要用@JvmName注解setter:

data class BarFoo(
var foo: String = "",
@set:JvmName("setIsFoo") var isFoo: String = ""
)

没有编译器错误,但有记录的行为(参见 https://kotlinlang.org/docs/java-to-kotlin-interop.html#properties ),要在不修改代码的情况下对其进行调整,您必须编写一些编译器插件。

也许有办法让jooq生成这样的代码?

关于kotlin 字段 foo 和 isFoo 冲突 : The following declarations have the same JVM signature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67698228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com