我有一个Kotlin源文件,但是我想将其转换为Java。
如何将Kotlin转换为Java源代码?
我有一个Kotlin源文件,但是我想将其转换为Java。
如何将Kotlin转换为Java源代码?
Answers:
正如@Vadzim所说,在IntelliJ或Android Studio中,您只需执行以下操作即可从kotlin获取Java代码:
Menu > Tools > Kotlin > Show Kotlin Bytecode
Decompile
按钮更新:
使用Kotlin插件的最新版本(1.2+),您也可以直接执行Menu > Tools > Kotlin -> Decompile Kotlin to Java
。
Decompile Kotlin to Java
目前仅对编译的Kotlin类启用。
您可以将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源”是迄今为止唯一的解决方案。
但我想提一提我喜欢的方式:使用Android的Jadx反编译器。
它允许查看生成的闭包代码,对我而言,生成的代码“更干净”,然后是IntelliJ IDEA反编译器中的代码。
通常,当我需要查看任何Kotlin类的Java源代码时,我会这样做:
./gradlew assembleDebug
jadx-gui ./app/build/outputs/apk/debug/app-debug.apk
在此GUI中,基本的IDE功能起作用:类搜索,单击以进行声明。等等
同样,所有源代码都可以保存,然后使用其他工具(如IntelliJ IDEA)进行查看。
brew install jadx
Java和Kotlin在Java虚拟机(JVM)上运行。
将Kotlin文件转换为Java文件涉及两个步骤,即将Kotlin代码编译为JVM字节码,然后将字节码反编译为Java代码。
将Kotlin源文件转换为Java源文件的步骤: