[英]How to convert a Kotlin source file to a Java source file
我有一个 Kotlin 源文件,但我想将它翻译成 Java。
如何将 Kotlin 转换为 Java 源代码?
正如@Vadzim 所说,在 IntelliJ 或 Android Studio 中,您只需执行以下操作即可从 kotlin 获取 Java 代码:
Menu > Tools > Kotlin > Show Kotlin Bytecode
Decompile
按钮更新:
使用 Kotlin 插件的最新版本 (1.2+),您还可以直接执行Menu > Tools > Kotlin -> Decompile Kotlin to Java
。
您可以将 Kotlin 编译为字节码,然后使用 Java 反汇编器。
反编译可以在 IntelliJ Idea 中完成,也可以使用 FernFlower https://github.com/fesh0r/fernflower (感谢 @Jire)
几个月前我检查过,没有自动化工具(并且没有一个 AFAIK 的计划)
我将 Kotlin 编译为字节码,然后将其反编译为 Java。 我用 Kotlin 编译器编译,用cfr反编译。
我的项目在这里。
这允许我编译这个:
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);
}
}
正如@louis-cad 提到的,“Kotlin 源代码 -> Java 的字节码 -> Java 源代码”是目前唯一的解决方案。
但我想提一下我更喜欢的方式:使用Jadx decompiler for Android 。
它允许查看闭包的生成代码,对我而言,生成的代码比 IntelliJ IDEA 反编译器中的代码“更干净”。
通常,当我需要查看任何 Kotlin 类的 Java 源代码时,我会这样做:
./gradlew assembleDebug
jadx-gui ./app/build/outputs/apk/debug/app-debug.apk
在此 GUI 中,基本 IDE 功能起作用:类搜索、单击以进行声明。 等等。
还可以保存所有源代码,然后使用 IntelliJ IDEA 等其他工具查看。
我不敢相信没有人提到本地历史记录 :默认情况下,IDEA将保留文件更改历史记录。
在将文件转换为Kotlin之前,要完全恢复文件的样子,请执行以下操作:
对于您要还原的每个文件:
如果您几个月前就这样做了(因为本地历史记录不是VCS),那么这可能就行不通了,例如,它不能重新创建您使用Kotlin添加的任何方法,但是对我有用。
我有一个Kotlin源文件,但是我想将其转换为Java。
如何将Kotlin转换为Java源代码?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.