Могу ли я узнать, когда моя библиотека вызывается из Java или Kotlin?
Я занимаюсь разработкой библиотеки Kotlin для Android. Я хочу предоставить отличный опыт для разработчиков как Kotlin, так и Java, но поскольку у меня нет бесконечных ресурсов, мне нужно расставить приоритеты между ними.
Библиотека взаимодействует с сервером, который я контролирую, поэтому я могу добавлять метаданные к сетевым вызовам, которые помогут мне узнать, кто из моих пользователей разделен.
Но есть ли способ узнать, когда моя библиотека вызывается из Java VS Kotlin?
В этом ответе я вижу, что может быть способ осмотреть данный класс, но, как владелец библиотеки, я не думаю, что могу знать, какой класс вызывает мой собственный, без использования отражения, которое добавило бы некоторую стоимость времени выполнения. Разве нет способа получить во время выполнения метаданные от JVM, которые бы указывали, был ли код скомпилирован из Kotlin (даже за счет ложных отрицаний, например, проверка KAPT
использовался в любой момент, о котором по крайней мере сообщалось бы некоторым пользователям Kotlin?)
1 ответ
Краткий ответ: НЕТ.
Когда ваш код выполняется, он компилируется в байт-код Java в обоих случаях.