kaptDebugKotlin СБОЙ: Использовать K_JavaSource в классе kotlin, который был сгенерирован kapt с аннотацией define в классе java - PullRequest
0 голосов
/ 12 июня 2019

kaptDebugKotlin СБОЙ, когда класс kotlin использует класс java (K_JavaSource.example gen by kapt), с ошибкой cannot find symbol: K_JavaSource.

Когда я удаляю @KvoWatch(name = K_JavaSource.example, thread = KvoWatch.Thread.MAIN) из KvoKotlinActivity.kt, он будет работать нормально.

Кстати, я использую K_KtSource.time и 'K_JavaSource.example' в классе java тоже отлично работают.

демонстрационный код (или см. Git https://github.com/drumge/android-kvo):

KvoKotlinActivity.kt

class KvoKotlinActivity : Activity() {

    private val TAG = "KvoKotlinActivity"

    private lateinit var ktSource: KtSource

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        ktSource = KtSource()

        ktSource.aa = 10
        ktSource.sChar = 'c'

        Kvo.getInstance().bind(this, ktSource)
    }

    @KvoWatch(name = K_KtSource.time, thread = KvoWatch.Thread.MAIN)
    fun onTimeChange(event: KvoEvent<KtSource, Long>) {
        Log.i(TAG, "onTimeChange oldValue: ${event.oldValue}, newValue: ${event.newValue}, source: ${event.source}")
    }

    @KvoWatch(name = K_JavaSource.example, thread = KvoWatch.Thread.MAIN)
    fun onExampleChange(event: KvoEvent<KtSource, String>) {
        Log.i(TAG, "onTimeChange oldValue: ${event.oldValue}, newValue: ${event.newValue}, source: ${event.source}")
    }
}

K_KtSource.kt gen by kapt

final object K_KtSource {
    final const val time: String = "time"
}

K_JavaSource.java gen by kapt

public interface K_JavaSource {
  String example = "example";
}
...