Kotlin генерирует код jvm8 или jvm6. Учтите следующее:

  • Вы пишете библиотеку jvm11 (в java)
  • Вы пишете приложение kotlin, которое хочет использовать библиотеку jvm11

Это возможно? Если да, то как это работает под капотом?

0
Brian Attwell 15 Мар 2019 в 01:39

1 ответ

Лучший ответ

Так работает JVM, и это вообще не относится к Kotlin.

Допустим, у вас есть два класса Class1 и Class2, и Class1 необходимо вызвать Class2. Тогда байт-код Class1 использует только имя Class2 и подписи его членов. Он не знает и не заботится о том, был ли Class2 скомпилирован для Java 5, Java 11 или Java 5000.

Байт-код Class1 говорит, например, "вызвать этот конструктор Class2 с этими аргументами". Когда этот код выполняется, загружается Class2 (если он еще не был), и его версия байт-кода сравнивается с той, которую понимает JVM.

1
Alexey Romanov 15 Мар 2019 в 05:54