我已经编写了一个注释处理器,它为我的类生成一个构建器类@DataBuilder
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.SOURCE)
annotation class DataBuilder
我用这个注释注释的类位于com.my.package.model
包中,生成的构建器类也位于同一个包com.my.package.model
中,但是在生成的目录中,当然build/generated/source/kapt/debug/com/my/package/model/MyModelBuilder.kt
,我可以在我的模型类中使用这些生成的类(用 Kotlin 编写)
但是我不能在 java 类中使用生成的MyModelBuilder
Kotlin 类作为类成员
package com.my.package.home;
import com.my.package.model.MyModelBuilder;
public class Home {
MyModelBuilder builder; // <=== AS recognizes the class, but I'm having an compilation issue
}
Android Studio 可以识别该类,但我遇到了这个编译问题
com/my/package/home/Home.java:4: error: cannot find symbol
MyModelBuilder builder;
^
symbol: class MyModelBuilder
location: class Home
这很奇怪,因为我只能在方法内部使用这个生成的构建器类,这段代码编译得很好:
package com.my.package.home;
import com.my.package.model.MyModelBuilder;
public class Home {
public void hello() {
MyModelBuilder builder;
}
}
这里有人可以帮助我理解这种行为以及如何解决这个问题吗?提前,谢谢!
更新
我刚刚使用必要的代码创建了这个 repo 来复制问题 https://github.com/epool/HelloKapt
该项目在克隆和运行后工作正常,要复制问题,请取消注释此行https://github.com/epool/HelloKapt/blob/master/app/src/main/java/com/nearsoft/hellokapt/app /MainActivity.java#L13
注意:如果我将 MainActivity.java 类转换为 Kotlin(MainActivity.kt) 问题是不可重现的并且工作正常,但由于到目前为止的一些项目限制,我不想这样做