Kotlinのソースファイルがありますが、それをJavaに翻訳したいのです。
KotlinをJavaソースに変換する方法
IntelliVまたはAndroid Studioで@Vadzimが言ったように、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)
私が数ヶ月前にチェックしたように自動化されたツールはありませんでした(そして1つのAFAIKの計画はありませんでした)
@ louis-cadが述べたように、 "Kotlinのソース - > Javaのバイトコード - > Javaのソース"はこれまでのところ唯一の解決策です。
しかし、私は私が好む方法について言及したいと思います: Android用Jadxデコンパイラを使用します 。
それは closures のための生成コードを見ることを可能にします、そして、私に関しては、結果コードは "よりきれい"で、それからIntelliJ IDEA逆コンパイラからのものです。
通常、KotlinクラスのJavaソースコードを見る必要があるときは、
./gradlew assembleDebug
jadx-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))
これに:
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);
}
}