Котлин против android java с точки зрения работы на Далвик В.М. - PullRequest
0 голосов
/ 10 сентября 2018

Я хотел бы знать, является ли kotlin тем же, что и для Android Java, с точки зрения взаимодействия на низком уровне. Под этим я подразумеваю, что java-файлы для Android преобразуются в dex-файлы, после чего их можно запускать на Dalvik VM, а как насчет файлов kotlin? Это так же или есть что-то еще? И где я могу найти больше информации об этом? Может быть, какая-то хорошая книга говорит об этом? Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Kotlin компилируется в байт-код Java , и для целей Android выходные данные .class обоих этих компиляторов преобразуются в файлы .dex таким же образом, в этот момент процесса. , их исходные языки совершенно не имеют значения.

Здесь является частью выступления Джейка Уортона, в котором он объясняет тонкости фактического разрешения ссылок, так что взаимодействие может работать в обоих направлениях, например, между Java и Kotlin.

0 голосов
/ 10 сентября 2018

Kotlin только что скомпилирован в байт-код Java. Для любых «специальных» функций, таких как расширения или нулевая защита, Kotlin просто внедряет некоторый код. Например, при нулевой защите код Kotlin может выглядеть следующим образом:

fun setPackageName(pName: String) {
    //do something
}

Пока он компилируется в:

public final void setPackageName(@NotNull String pName) {
    Intrinsics.checkParameterIsNotNull(pName, "setPackageName");
    //do something
}

Если у вас есть переменная в Kotlin, с установщиком / получателем:

var something: Something? = null
    get() {
        return field
    }
    set(value) {
        field = value
    }

Kotlin просто преобразует всю установку в приватную переменную-член и некоторые методы:

private Something something;

public Something getSomething() {
    return something;
}

public void setSomething(Something something) {
    this.something = something;
}

Очевидно, что этот метод установки / получения довольно бесполезен, но он иллюстрирует, что может сделать Котлин.

По сути, Kotlin просто конвертирует себя в Java во время компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...