Tengo un archivo fuente de Kotlin, pero quiero traducirlo a Java.
¿Cómo puedo convertir Kotlin a fuente Java?
Tengo un archivo fuente de Kotlin, pero quiero traducirlo a Java.
¿Cómo puedo convertir Kotlin a fuente Java?
Respuestas:
Como dijo @Vadzim, en IntelliJ o Android Studio, solo tiene que hacer lo siguiente para obtener el código java de kotlin:
Menu > Tools > Kotlin > Show Kotlin Bytecode
Decompile
botónActualizar:
Con una versión reciente (1.2+) del complemento Kotlin, también puede hacerlo directamente Menu > Tools > Kotlin -> Decompile Kotlin to Java
.
Decompile Kotlin to Java
actualmente está habilitado solo para las clases compiladas de Kotlin .
Puede compilar Kotlin para bytecode, luego usar un desensamblador Java.
El descompilación se puede hacer dentro de IntelliJ Idea, o usando FernFlower https://github.com/fesh0r/fernflower (gracias @Jire)
No había una herramienta automatizada como lo comprobé hace un par de meses (y no hay planes para un AFAIK)
Para convertir un
Kotlin
archivo fuente en unJava
archivo fuente que necesita (cuando está en Android Studio):
Prensa Cmd- Shift- Aen un Mac, o pulse Ctrl- Shift- Aen una máquina Windows.
Escriba la acción que está buscando: Kotlin Bytecode
y elija Show Kotlin Bytecode
del menú.
Decompile
botón en la parte superior del Kotlin Bytecode
panel.Compilo Kotlin para codificar en bytes y luego descompilo eso en Java. Compilo con el compilador de Kotlin y descompilo con cfr .
Mi proyecto esta aqui .
Esto me permite compilar esto:
package functionsiiiandiiilambdas.functions.p01tailiiirecursive
tailrec fun findFixPoint(x: Double = 1.0): Double =
if (x == Math.cos(x)) x else findFixPoint(Math.cos(x))
A esto:
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);
}
}
Como @ louis-cad mencionó, "la fuente de Kotlin -> el código de bytes de Java -> la fuente de Java" es la única solución hasta ahora.
Pero me gustaría mencionar la forma, que prefiero: usar el descompilador Jadx para Android .
Permite ver el código generado para los cierres y, para mí, el código resultante es "más limpio" que uno del descompilador IntelliJ IDEA.
Normalmente cuando necesito ver el código fuente de Java de cualquier clase de Kotlin que hago:
./gradlew assembleDebug
jadx-gui ./app/build/outputs/apk/debug/app-debug.apk
En esta GUI, la funcionalidad IDE básica funciona: búsqueda de clases, haga clic para ir a la declaración. etc.
Además, todo el código fuente podría guardarse y luego visualizarse utilizando otras herramientas como IntelliJ IDEA.
brew install jadx
Java y Kotlin se ejecutan en Java Virtual Machine (JVM).
La conversión de un archivo Kotlin a un archivo Java implica dos pasos, es decir, compilar el código Kotlin en el código de bytes JVM y luego descompilar el código de bytes en el código Java.
Pasos para convertir su archivo fuente Kotlin a un archivo fuente Java: