para - diferencias entre java y kotlin
Cómo convertir un archivo fuente kotlin en un archivo fuente java (7)
Para convertir un archivo fuente
Kotlin
en un archivo fuenteJava
, debe hacerlo (cuando está en Android Studio):
-
Presione Cmd - Shift - A en una Mac, o presione Ctrl - Shift - A en una máquina con Windows.
-
Escriba la acción que está buscando:
Kotlin Bytecode
y elijaShow Kotlin Bytecode
del menú.
-
Presione el botón
Decompile
en la parte superior del panelKotlin Bytecode
.
- Ahora obtienes un archivo Java descompilado junto con el archivo Kotlin en una pestaña adyacente:
Espero que esto ayude.
Tengo un archivo fuente de Kotlin, pero quiero traducirlo a Java.
¿Cómo puedo convertir Kotlin a fuente Java?
- Abra el archivo Kotlin en Android Studio
- ir a herramientas -> kotlin -> kotlin bytecode
- en la nueva ventana que se abre al lado de su archivo kotlin, haga clic en el botón descompilar. creará el equivalente java de su archivo kotlin.
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:
-
Generar apk:
./gradlew assembleDebug
-
Abra apk usando Jadx GUI:
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.
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
-
Haga clic en el botón
Decompile
- Copia el código de Java
Actualizar:
Con una versión reciente (1.2+) del complemento Kotlin, también puede hacer directamente
Menu > Tools > Kotlin -> Decompile Kotlin to Java
.
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 here .
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);
}
}
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)