У меня есть исходный файл Kotlin, но я хочу перевести его на Java.
Как преобразовать Kotlin в источник Java?
У меня есть исходный файл Kotlin, но я хочу перевести его на Java.
Как преобразовать Kotlin в источник Java?
Как сказал @Vadzim, в IntelliJ или Android Studio вам просто нужно сделать следующее, чтобы получить код java от kotlin:
Menu > Tools > Kotlin > Show Kotlin Bytecode
Decompile
Обновить:
С недавней версией (1. 2+) плагина Kotlin вы также можете напрямую выполнять Menu > Tools > Kotlin → Decompile Kotlin to Java
.
Вы можете скомпилировать Kotlin в байт-код, а затем использовать дизассемблер Java.
Декомпиляция может быть выполнена внутри IntelliJ Idea или с помощью FernFlower https://github.com/fesh0r/fernflower (спасибо @Jire)
Не было никакого автоматизированного инструмента, поскольку я проверил пару месяцев назад (и никаких планов относительно одного AFAIK)
Вы можете перейти в Инструменты> Kotlin> Показать байт-код kotlin
В Android Studio вам просто нужно сделать следующее, чтобы получить код байт-кода Java:
Показать байт-код: Tools
→ Kotlin
→ Show Kotlin Bytecode
Или: cmd + shift + A (Mac)/ctrl + shift + A (Windows) и тип Kotlin Bytecode
Примечание. Кнопка декомпиляции доступна, только если вы установили и включили плагин "Decompiler Java Bytecode",
java код байт-кода:
Как сказал @louis-cad "Источник Kotlin → Байт-код Java → Источник Java" - единственное решение.
Но я хотел бы упомянуть о том, как я предпочитаю: использование декомпилятора Jadx для Android.
Он позволяет видеть, что генерирует код для закрытий, и, как для меня, полученный код является "более чистым", чем один из декомпилятора IntelliJ IDEA.
Обычно, когда мне нужно увидеть исходный код Java любого класса Kotlin, я делаю:
./gradlew assembleDebug
jadx-gui./app/build/outputs/apk/debug/app-debug.apk
В этой функции базового IDE графического интерфейса работает: поиск по классам, нажмите, чтобы перейти к объявлению. и т.п.
Также весь исходный код можно сохранить, а затем просмотреть с помощью других инструментов, таких как IntelliJ IDEA.
Я компилирую 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);
}
}
Чтобы преобразовать исходный файл
Kotlin
исходный файлJava
вам нужно (когда вы находитесь в Android Studio):
Нажмите Cmd - Shift - A на Mac или нажмите Ctrl - Shift - A на компьютере с Windows.
Введите искомое действие: Kotlin Bytecode
и выберите Show Kotlin Bytecode
из меню.
Decompile
в верхней части панели Kotlin Bytecode
.Надеюсь это поможет.