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条答案
按热度按时间z2acfund1#
您可以将kotlin编译成字节码,然后使用java反汇编程序。
反编译可以在intellij idea内部完成,也可以使用fernflowerhttps://github.com/fesh0r/fernflower (谢谢@jire)
几个月前我检查过没有自动工具(也没有一个afaik的计划)
q1qsirdb2#
在android studio中打开kotlin文件
转到工具->kotlin->kotlin字节码
在kotlin文件旁边打开的新窗口中,单击反编译按钮。它将创建相当于kotlin文件的java。
fcg9iug33#
我将kotlin编译成字节码,然后反编译成java。我用kotlin编译器编译,用cfr反编译。
我的项目在这里。
这使我能够编译:
对此:
vd2z7a6w4#
您可以进入“工具”>“kotlin”>“显示kotlin字节码”
0md85ypi5#
java和kotlin在java虚拟机(jvm)上运行。
将kotlin文件转换为java文件需要两个步骤,即将kotlin代码编译成jvm字节码,然后将字节码反编译成java代码。
将kotlin源文件转换为java源文件的步骤:
在android工作室中打开您的kotlin项目。
然后导航到“工具”->“kotlin”->“显示kotlin字节码”。
你将得到你的kotin文件的字节码。
现在单击反编译按钮从字节码中获取java代码
n3h0vuf26#
正如@louis cad提到的,“kotlin源代码->java的字节码->java源代码”是目前为止唯一的解决方案。
但是我想提一下我更喜欢的方式:使用jadx反编译器for android。
它允许查看为闭包生成的代码,对我来说,生成的代码比intellij idea反编译器生成的代码更“干净”。
通常,当我需要查看任何kotlin类的java源代码时,我会:
生成apk:
./gradlew assembleDebug
使用jadx gui打开apk:jadx-gui ./app/build/outputs/apk/debug/app-debug.apk
在这个gui中,ide的基本功能起作用:类搜索,点击去声明。等。此外,所有源代码都可以保存,然后使用intellij idea等其他工具查看。
yi0zb3m47#
转换
Kotlin
源文件到Java
您需要的源文件(在android studio中时):在mac上按cmd-shift-a,在windows计算机上按ctrl-shift-a。
键入要查找的操作:
Kotlin Bytecode
然后选择Show Kotlin Bytecode
从菜单。按
Decompile
顶部的按钮Kotlin Bytecode
面板。现在您可以在相邻的选项卡中获得反编译的java文件和kotlin文件:
cmssoen28#
正如@vadzim所说,在intellij或android studio中,您只需执行以下操作即可从kotlin获得java代码:
Menu > Tools > Kotlin > Show Kotlin Bytecode
点击Decompile
按钮复制java代码
更新:
使用最新版本(1.2+)的kotlin插件,您还可以直接
Menu > Tools > Kotlin -> Decompile Kotlin to Java
.