0

我正在使用 Kotlin,并且我有 kotlinc 编译器插件(使用箭头元库),它通过在 kotlin 编译期间添加例如新属性或新方法等来更改 .class。例如,原始来源 Kotlin A.kt 如下所示

@MetaData
data class A (val x: String, val y: String)

在应用编译器插件之后,.class 将被更改为(从源代码的角度来看),基本上我会隐式地将 MetaData 添加到所有类的主构造函数中,只要它有注释@MetaData,再加上fun getMetaData() 生成的新方法

    data class A(val x: String, val y:String, val myMeta: MetaData) {
       fun getMetaData() {
         //some logic check
         return myMeta
       }
    }

现在,当涉及到使用如下操作的新合成“类”时,IntelliJ 抱怨它找不到解析 A(它只有带有 2 个参数而不是 3 个参数的构造函数)并且也无法解析合成方法 getMetaData()。

val x = A("ba", "fo", MetaData(..))
val y = x.getMetaData()

有人可以解释一下吗?

我知道lombok在将其 @Getter 注释添加到 Java 源代码中之后似乎没有问题,IntelliJ 可以识别它的 getXXX 方法(由 lombok 生成)。我不知道如何为我的 kotlin 语言实现同样的功能。如果可能,请包括详细步骤。

4

0 回答 0