Как преобразовать исходный файл kotlin в исходный файл Java
У меня есть исходный файл Kotlin, но я хочу перевести его на Java.
Как я могу конвертировать Kotlin в исходный код Java?
11 ответов
Как сказал @Vadzim, в IntelliJ или Android Studio вам просто нужно сделать следующее, чтобы получить код java от kotlin:
Menu > Tools > Kotlin > Show Kotlin Bytecode
- Нажми на
Decompile
кнопка - Скопируйте код Java
Обновить:
С последней версией (1.2+) плагина Kotlin вы также можете напрямую делать Menu > Tools > Kotlin -> Decompile Kotlin to Java
,
Вы можете скомпилировать Kotlin в байт-код, а затем использовать дизассемблер Java.
Декомпиляция может быть выполнена внутри InteliJ Idea или с помощью FernFlower https://github.com/fesh0r/fernflower (спасибо @Jire)
Не было никакого автоматизированного инструмента, поскольку я проверил пару месяцев назад (и никаких планов относительно одного AFAIK)
Чтобы преобразовать
Kotlin
исходный файл вJava
исходный файл, который вам нужен (когда вы в Android Studio):
Нажмите Cmd - Shift - A на Mac или нажмите Ctrl - Shift - A на компьютере с Windows.
Введите искомое действие:
Kotlin Bytecode
и выбратьShow Kotlin Bytecode
из меню.
- Нажмите
Decompile
кнопка в верхней частиKotlin Bytecode
панель.
- Теперь вы получаете декомпилированный файл Java вместе с файлом Kotlin на соседней вкладке:
Надеюсь это поможет.
Я компилирую Kotlin в байт-код, а затем декомпилирую его в Java. Я компилирую с помощью компилятора Kotlin и декомпилирую с помощью cfr.
Мой проект здесь.
Это позволяет мне скомпилировать это:
package functionsiiiandiiilambdas.functions.p01tailiiirecursive
tailrec fun findFixPoint(x: Double = 1.0): Double =
if (x == Math.cos(x)) x else findFixPoint(Math.cos(x))
К этому:
package functionsiiiandiiilambdas.functions.p01tailiiirecursive;
public final class ExampleKt {
public static final double findFixPoint(double x) {
while (x != Math.cos(x)) {
x = Math.cos(x);
}
return x;
}
public static /* bridge */ /* synthetic */ double findFixPoint$default(
double d, int n, Object object) {
if ((n & 1) != 0) {
d = 1.0;
}
return ExampleKt.findFixPoint(d);
}
}
В Android Studio вам просто нужно сделать следующее, чтобы получить код байт-кода Java:
Показать байт-код:
Tools
->Kotlin
->Show Kotlin Bytecode
Или: cmd + shift + A (Mac) / ctrl + shift + A (Windows) и введите
Kotlin Bytecode
Примечание. Кнопка декомпиляции доступна только в том случае, если вы установили и включили плагин "Java Bytecode Decompiler"
Java-байт-код:
Как отметил @louis-cad, "источник Kotlin -> байт-код Java -> источник Java" пока является единственным решением.
Но я бы хотел упомянуть способ, который я предпочитаю: использовать декомпилятор Jadx для Android.
Это позволяет увидеть генерируемый код для замыканий, и, как по мне, полученный код "чище", чем код из декомпилятора IntelliJ IDEA.
Обычно, когда мне нужно увидеть исходный код Java любого класса Kotlin, я делаю:
- Сгенерировать apk:
./gradlew assembleDebug
- Откройте apk, используя Jadx GUI:
jadx-gui ./app/build/outputs/apk/debug/app-debug.apk
В этом графическом интерфейсе работает базовая функциональность IDE: поиск классов, нажмите, чтобы перейти к объявлению. и т.п.
Также весь исходный код можно сохранить, а затем просмотреть с помощью других инструментов, таких как IntelliJ IDEA.
Java и Kotlin работают на виртуальной машине Java (JVM).
Преобразование файла Kotlin в файл Java включает два шага, а именно: компиляцию кода Kotlin в байт-код JVM и затем декомпилирование байт-кода в код Java.
Шаги по преобразованию исходного файла Kotlin в исходный файл Java:
- Откройте свой проект Kotlin в Android Studio.
- Затем перейдите в Инструменты -> Kotlin -> Показать байт-код Kotlin.
- Вы получите байт-код вашего файла Kotin.
- Теперь нажмите кнопку "Декомпилировать", чтобы получить код Java из байт-кода.
- открыть файл kotlin в андроид студии
- перейти к инструментам -> kotlin -> байт-код kotlin
- в новом окне, которое открывается рядом с вашим файлом kotlin, нажмите кнопку декомпиляции. это создаст Java-эквивалент вашего файла Kotlin.
Вы можете выполнить следующие действия, чтобы преобразовать Kotlin в исходный код Java.
1. Откройте свой проект Kotlin в IntelliJ IDEA / Android Studio.
2. Затем перейдите в Инструменты> Kotlin> Показать байт-код Kotlin.
3. Вы получите байт-код вашего файла Kotin.
4. Теперь нажмите кнопку «Декомпилировать», чтобы получить код Java из байт-кода.
Если хотите узнать больше. Я сделал для вас поиск в Google. Я нашел там несколько действительно обучающих программ. Ссылка ниже выглядит довольно чертовски по существу. https://hkrtrainings.com/kotlin-tutorial
Чтобы преобразовать класс или несколько классов, используйте любой метод:
1.) Выделите класс и используйте сочетание клавиш: Ctrl + Alt + Shift + K.
2.) Выберите "Преобразовать файл Java в файл Kotlin" в строке меню опций "Код"