如何将Kotlin源文件转换为Java源文件

我有一个Kotlin源文件,但我想把它翻译成Java。

如何将Kotlin转换为Java源代码?

362603 次浏览

您可以将Kotlin编译为字节码,然后使用Java反汇编程序。

反编译可以在IntelliJ Idea中完成,或者使用FernFlower https://github.com/fesh0r/fernflower(谢谢@Jire)

正如我几个月前检查的那样,没有自动化工具(也没有AFAIK的计划)

正如@Vadzim所说,在IntelliJ或Android Studio中,你只需要做以下事情就可以从kotlin获得java代码:

  1. Menu > Tools > Kotlin > Show Kotlin Bytecode
  2. 单击Decompile按钮
  3. 复制java代码

更新:

使用Kotlin插件的最新版本(1.2+),你也可以直接执行Menu > Tools > Kotlin -> Decompile Kotlin to Java

正如@louis-cad提到的“Kotlin源代码-> Java的字节码-> Java源代码”是迄今为止唯一的解决方案。

但我想提一下我更喜欢的方法:使用Android的Jadx反编译器

它允许查看为闭包生成的代码,对我来说,结果代码比IntelliJ IDEA反编译器的代码“更干净”。

通常,当我需要看到任何Kotlin类的Java源代码时,我这样做:

  • 生成apk: ./gradlew assembleDebug
  • 使用Jadx GUI: jadx-gui ./app/build/outputs/apk/debug/app-debug.apk打开apk

在这个GUI中基本的IDE功能工作:类搜索,点击去声明。等。

此外,所有源代码都可以保存,然后使用其他工具(如IntelliJ IDEA)查看。

  1. 在android studio中打开kotlin文件
  2. 进入工具->kotlin ->kotlin bytecode
  3. 在kotlin文件旁边打开的新窗口中,单击反编译按钮。它将创建等同于kotlin文件的Java。

我将Kotlin编译为字节代码,然后将其反编译为Java。我用Kotlin编译器编译,用病死率反编译。

我的项目是在这里

这允许我编译这个:

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字节码

enter image description here

enter image description here

enter image description here

在Android Studio中,要将__ABC0源文件转换为Java源文件,您需要:

  1. 在Mac上按Cmd-转变-一个, 或在Windows机器上按Ctrl-转变-一个

  2. 输入你正在寻找的动作:Kotlin Bytecode并从菜单中选择Show Kotlin Bytecode

enter image description here

  1. 按下Kotlin Bytecode面板顶部的Decompile按钮。

enter image description here

  1. 现在你在一个相邻的选项卡中得到了一个反编译的Java文件和Kotlin文件:

enter image description here

Java和Kotlin运行在Java虚拟机(JVM)上。

将Kotlin文件转换为Java文件包括两个步骤,即将Kotlin代码编译为JVM字节码,然后将字节码反编译为Java代码。

将Kotlin源文件转换为Java源文件的步骤:

  1. 在Android Studio中打开你的Kotlin项目。
  2. 然后导航到Tools -> Kotlin -> Show Kotlin Bytecode。

enter image description here

  1. 您将获得Kotin文件的字节码。
  2. 现在单击Decompile按钮,从字节码中获取Java代码