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);
}
}
8条答案
按热度按时间anauzrmj1#
正如@Vadzim所说,在IntelliJ或Android Studio中,你只需要做以下几件事就可以从Kotlin获得java代码:
Menu > Tools > Kotlin > Show Kotlin Bytecode
1.单击
Decompile
按钮1.复制java代码
更新日期:
使用Kotlin插件的最新版本(1.2+),您也可以直接执行
Menu > Tools > Kotlin -> Decompile Kotlin to Java
。wmomyfyw2#
您可以将Kotlin编译为字节码,然后使用Java反汇编程序。
反编译可以在IntelliJ Idea内部完成,或者使用FernFlower https://github.com/fesh0r/fernflower(感谢@Jire)
没有自动化的工具,因为我检查了几个月前(也没有一个AFAIK的计划)
jgzswidk3#
您可以转到工具〉Kotlin〉显示Kotlin字节码
chhqkbe14#
在Android Studio中,要将
Kotlin
源文件转换为Java
源文件,您需要:1.在Mac上按Cmd-Shift-A组合键,或在Windows计算机上按Ctrl-Shift-A组合键。
1.键入您要查找的操作:
Kotlin Bytecode
,然后从菜单中选择Show Kotlin Bytecode
。1.按
Kotlin Bytecode
面板顶部的Decompile
按钮。1.现在,您将在相邻的选项卡中获得一个反编译的Java文件沿着Kotlin文件:
nwnhqdif5#
我将Kotlin编译为字节码,然后将其反编译为Java。我使用Kotlin编译器进行编译,使用cfr进行反编译。
我的项目是here。
这样我就可以编译出:
对此:
pgpifvop6#
正如@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查看。
pokxtpni7#
1.在android studio中打开Kotlin文件
1.转到工具-〉Kotlin-〉kotlin字节码
1.在你的Kotlin文件旁边打开的新窗口中,点击反编译按钮。它将创建你的kotlin文件的java等价物。
rpppsulh8#
Java和Kotlin在Java虚拟机(JVM)上运行。
将Kotlin文件转换为Java文件涉及两个步骤,即,将Kotlin代码编译为JVM字节码,然后将字节码反编译为Java代码。
将Kotlin源文件转换为Java源文件的步骤:
1.在Android Studio中打开Kotlin项目。
1.然后导航到工具-〉Kotlin-〉显示Kotlin字节码。
1.您将获得Kotin文件的字节码。
1.现在单击Decompile按钮,从字节码中获取Java代码