如何将 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 代码:

  1. Menu > Tools > Kotlin > Show Kotlin Bytecode
  2. 单击 Decompile 按钮
  3. 复制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。

  1. 在 android 工作室中打开 kotlin 文件
  2. 转到工具 -> kotlin ->kotlin 字节码
  3. 在您的 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):

  1. Cmd-Shift-A在Mac, 或在 Windows 机器上按 Ctrl-Shift-A

  2. 键入您要查找的操作:Kotlin Bytecode 并从菜单中选择 Show Kotlin Bytecode

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

  1. 现在您会在相邻的选项卡中获得反编译的 Java 文件和 Kotlin 文件:

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

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

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

  1. 在 Android Studio 中打开您的 Kotlin 项目。
  2. 然后导航到工具 -> Kotlin -> 显示 Kotlin 字节码。

  1. 您将获得 Kotin 文件的字节码。
  2. 现在单击“反编译”按钮从字节码
  3. 中获取您的Java代码