Я написал процессор аннотаций, который генерирует класс построителя для моих классов, помеченных @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)
НО Я могу НЕ использовать сгенерированный MyModelBuilder
класс Kotlin внутри java-класса в качестве члена класса
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;
}
}
Может кто-нибудь здесь помочь мне понять это поведение и какпочини это?Заранее спасибо!
ОБНОВЛЕНИЕ
Я только что создал этот репозиторий с необходимым кодом для репликации вопроса 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), проблемы НЕ воспроизводятся и работают нормально,но я не хочу этого делать из-за некоторых ограничений проекта
Kotlin Проблема: https://youtrack.jetbrains.net/issue/KT-24591