[英]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.