如何将 Kotlin 源文件转换为 Java 源文件
How to convert a Kotlin source file to a Java source file
我有一个 Kotlin 源文件,但我想将它翻译成 Java。
如何将 Kotlin 转换为 Java 源代码?
您可以将 Kotlin 编译为字节码,然后使用 Java 反汇编程序。
反编译可以在 IntelliJ Idea 中完成,或者使用 FernFlower https://github.com/fesh0r/fernflower(感谢@Jire)
几个月前我检查过没有自动化工具(也没有计划使用一个 AFAIK)
正如@Vadzim 所说,在 IntelliJ 或 Android Studio 中,您只需执行以下操作即可从 kotlin 获取 java 代码:
Menu > Tools > Kotlin > Show Kotlin Bytecode
- 单击
Decompile
按钮
- 复制java代码
更新:
使用最新版本 (1.2+) 的 Kotlin 插件,您还可以直接执行 Menu > Tools > Kotlin -> Decompile Kotlin to Java
.
如@louis-cad所述,"Kotlin source -> Java's byte code -> Java source" 是目前唯一的解决方案。
但我想提一下我更喜欢的方式:使用 Jadx decompiler for Android。
它允许查看 closures 的生成代码,对我来说,生成的代码是 "cleaner",然后是来自 IntelliJ IDEA 反编译器的代码。
通常当我需要查看 Java 任何 Kotlin 的源代码时 class 我会这样做:
- 生成 apk:
./gradlew assembleDebug
- 使用 Jadx GUI 打开 apk:
jadx-gui ./app/build/outputs/apk/debug/app-debug.apk
在此 GUI 中,基本 IDE 功能有效:class 搜索,单击以进行声明。等等
还可以保存所有源代码,然后使用其他工具(如 IntelliJ)查看 IDEA。
- 在 android 工作室中打开 kotlin 文件
- 转到工具 -> kotlin ->kotlin 字节码
- 在您的 kotlin 文件旁边打开的新 window 中,单击反编译按钮。它将创建 java 等同于您的 kotlin 文件。
我将 Kotlin 编译为字节码,然后将其反编译为 Java。我使用 Kotlin 编译器编译并使用 cfr.
反编译
我的项目是here。
这让我可以编译:
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 > 显示 kotlin 字节码
To convert a Kotlin
source file to a Java
source file you need to (when you in Android Studio):
按Cmd-Shift-A在Mac,
或在 Windows 机器上按 Ctrl-Shift-A。
键入您要查找的操作:Kotlin Bytecode
并从菜单中选择 Show Kotlin Bytecode
。
- 按
Kotlin Bytecode
面板顶部的 Decompile
按钮。
- 现在您会在相邻的选项卡中获得反编译的 Java 文件和 Kotlin 文件:
Java 并且 Kotlin 在 Java 虚拟机 (JVM) 上运行。
将 Kotlin 文件转换为 Java 文件涉及两个步骤,即将 Kotlin 代码编译为 JVM 字节码,然后将字节码反编译为 Java 代码。
将 Kotlin 源文件转换为 Java 源文件的步骤:
- 在 Android Studio 中打开您的 Kotlin 项目。
- 然后导航到工具 -> Kotlin -> 显示 Kotlin 字节码。
- 您将获得 Kotin 文件的字节码。
- 现在单击“反编译”按钮从字节码
中获取您的Java代码
我有一个 Kotlin 源文件,但我想将它翻译成 Java。
如何将 Kotlin 转换为 Java 源代码?
您可以将 Kotlin 编译为字节码,然后使用 Java 反汇编程序。
反编译可以在 IntelliJ Idea 中完成,或者使用 FernFlower https://github.com/fesh0r/fernflower(感谢@Jire)
几个月前我检查过没有自动化工具(也没有计划使用一个 AFAIK)
正如@Vadzim 所说,在 IntelliJ 或 Android Studio 中,您只需执行以下操作即可从 kotlin 获取 java 代码:
Menu > Tools > Kotlin > Show Kotlin Bytecode
- 单击
Decompile
按钮 - 复制java代码
更新:
使用最新版本 (1.2+) 的 Kotlin 插件,您还可以直接执行 Menu > Tools > Kotlin -> Decompile Kotlin to Java
.
如@louis-cad所述,"Kotlin source -> Java's byte code -> Java source" 是目前唯一的解决方案。
但我想提一下我更喜欢的方式:使用 Jadx decompiler for Android。
它允许查看 closures 的生成代码,对我来说,生成的代码是 "cleaner",然后是来自 IntelliJ IDEA 反编译器的代码。
通常当我需要查看 Java 任何 Kotlin 的源代码时 class 我会这样做:
- 生成 apk:
./gradlew assembleDebug
- 使用 Jadx GUI 打开 apk:
jadx-gui ./app/build/outputs/apk/debug/app-debug.apk
在此 GUI 中,基本 IDE 功能有效:class 搜索,单击以进行声明。等等
还可以保存所有源代码,然后使用其他工具(如 IntelliJ)查看 IDEA。
- 在 android 工作室中打开 kotlin 文件
- 转到工具 -> kotlin ->kotlin 字节码
- 在您的 kotlin 文件旁边打开的新 window 中,单击反编译按钮。它将创建 java 等同于您的 kotlin 文件。
我将 Kotlin 编译为字节码,然后将其反编译为 Java。我使用 Kotlin 编译器编译并使用 cfr.
反编译我的项目是here。
这让我可以编译:
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 > 显示 kotlin 字节码
To convert a
Kotlin
source file to aJava
source file you need to (when you in Android Studio):
按Cmd-Shift-A在Mac, 或在 Windows 机器上按 Ctrl-Shift-A。
键入您要查找的操作:
Kotlin Bytecode
并从菜单中选择Show Kotlin Bytecode
。
- 按
Kotlin Bytecode
面板顶部的Decompile
按钮。
- 现在您会在相邻的选项卡中获得反编译的 Java 文件和 Kotlin 文件:
Java 并且 Kotlin 在 Java 虚拟机 (JVM) 上运行。
将 Kotlin 文件转换为 Java 文件涉及两个步骤,即将 Kotlin 代码编译为 JVM 字节码,然后将字节码反编译为 Java 代码。
将 Kotlin 源文件转换为 Java 源文件的步骤:
- 在 Android Studio 中打开您的 Kotlin 项目。
- 然后导航到工具 -> Kotlin -> 显示 Kotlin 字节码。
- 您将获得 Kotin 文件的字节码。
- 现在单击“反编译”按钮从字节码 中获取您的Java代码