act*_*cay 350 java code-conversion kotlin
我有一个Kotlin源文件,但我想把它翻译成Java.
如何将Kotlin转换为Java源代码?
Lou*_*CAD 353
正如@Vadzim所说,在IntelliJ或Android Studio中,您只需执行以下操作即可从kotlin获取Java代码:
Menu > Tools > Kotlin > Show Kotlin BytecodeDecompile按钮更新:
使用最新版本(1.2+)的Kotlin插件,您也可以直接使用Menu > Tools > Kotlin -> Decompile Kotlin to Java.
vod*_*dan 38
您可以将Kotlin编译为字节码,然后使用Java反汇编程序.
反编译可以在InteliJ Idea内部完成,也可以使用FernFlower https://github.com/fesh0r/fernflower(感谢@Jire)
我几个月前检查过没有自动化工具(并且没有一个AFAIK的计划)
正如@louis-cad 提到的,“Kotlin 源代码 -> Java 的字节码 -> Java 源代码”是目前唯一的解决方案。
但我想提一下我更喜欢的方式:使用Jadx decompiler for Android。
它允许查看闭包的生成代码,对我而言,生成的代码比 IntelliJ IDEA 反编译器中的代码“更干净”。
通常,当我需要查看任何 Kotlin 类的 Java 源代码时,我会这样做:
./gradlew assembleDebugjadx-gui ./app/build/outputs/apk/debug/app-debug.apk在此 GUI 中,基本 IDE 功能起作用:类搜索、单击以进行声明。等等。
还可以保存所有源代码,然后使用 IntelliJ IDEA 等其他工具查看。
我将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))
Run Code Online (Sandbox Code Playgroud)
对此:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
要将
Kotlin源文件转换为源文件,Java您需要(在Android Studio中):
输入您要查找的操作:,Kotlin Bytecode然后Show Kotlin Bytecode从菜单中选择。
Decompile顶部的按钮Kotlin Bytecode。希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
171923 次 |
| 最近记录: |