Включить и отключить трансляцию в kotlin

Я написал этот код для включения и отключения трансляции:

val broadcastState = when(state){ true -> {PackageManager.COMPONENT_ENABLED_STATE_ENABLED} false -> {PackageManager.COMPONENT_ENABLED_STATE_DISABLED} } val component:ComponentName=ComponentName(this,DateChangeReceiver::class) packageManager.setComponentEnabledSetting(component, broadcastState,PackageManager.DONT_KILL_APP) 

Но Android Studio дала некоторую ошибку, пока я не изменил component :

 val component:ComponentName=ComponentName(this,DateChangeReceiver::class.java) 

На основе этой ссылки он должен использоваться для извлечения класса Java объекта, но все мои классы находятся в kotlin. Поэтому мне интересно, правильно ли я это делаю.

Это дает вам ошибку, потому что класс ComponentName ожидает контекст и класс Java. Поскольку ваш класс был написан в Котлине, вы должны получить класс, выполнив, как вы сказали:

DateChangeReceiver::class.java

или

DateChangeReceiver::javaClass

Если ComponentName ожидал класс Kotlin, не было бы проблем, выполнив его без .java

Вы столкнетесь с этим, используя некоторые библиотеки Java.

Также проверьте это об отражении в Котлине. Как указано там:

Обратите внимание, что ссылка класса Kotlin не совпадает с ссылкой на класс Java. Чтобы получить ссылку на класс Java, используйте свойство .java в экземпляре KClass.