Это то, как работает JVM и вообще не относится к Kotlin.
Допустим, у вас есть два класса Class1
и Class2
, и Class1
необходимо вызвать Class2
.Тогда байт-код Class1
использует только имя Class2
и подписи его членов.Он не знает и не заботится, скомпилирован ли Class2
для Java 5, Java 11 или Java 5000.
Байт-код Class1
говорит, например, "вызвать конструктор Class2
с этими аргументами".Когда этот код выполняется, загружается Class2
(если он еще не был) и его версия байт-кода сравнивается с той, которую понимает JVM.