web-dev-qa-db-fra.com

Comment convertir un fichier source kotlin en un fichier source Java

J'ai un fichier source Kotlin, mais je veux le traduire en Java.

Comment puis-je convertir Kotlin en Java source?

321
activedecay

Comme @Vadzim l'a dit, dans IntelliJ ou Android Studio, il suffit de procéder comme suit pour obtenir le code Java de kotlin:

  1. Menu > Tools > Kotlin > Show Kotlin Bytecode
  2. Cliquez sur le bouton Decompile
  3. Copiez le code Java

Mise à jour:

Avec une version récente (1.2+) du plugin Kotlin, vous pouvez aussi faire directement Menu > Tools > Kotlin -> Decompile Kotlin to Java.

332
Louis CAD

Vous pouvez compiler Kotlin en bytecode, puis utiliser un désassembleur Java.

La décompilation peut être effectuée dans IntelliJ Idea ou à l'aide de FernFlower https://github.com/fesh0r/fernflower (merci @Jire)

Il n’existait pas d’outil automatisé, comme j’ai vérifié il ya deux mois (et je n’ai pas de projet de ce que je sache).

37
voddan

vous pouvez aller à Outils> Kotlin> Afficher le bytecode de kotlin

enter image description here

enter image description here

enter image description here

18
Rasoul Miri

Pour convertir un fichier source Kotlin en un fichier source Java dont vous avez besoin (lorsque vous êtes dans Android Studio):

  1. Presse Cmd-Shift-A sur un Mac ou appuyez sur Ctrl-Shift-A sur une machine Windows. enter image description here

  2. Tapez l'action que vous cherchez: Kotlin Bytecode et choisissez Show Kotlin Bytecode dans le menu.

enter image description here

  1. Appuyez sur la touche Decompile en haut du panneau Kotlin Bytecode.

enter image description here

  1. Vous obtenez maintenant un fichier Java Decompiled avec un fichier Kotlin dans un onglet adjacent:

enter image description here

J'espère que cela t'aides.

4
ARGeo

Je compile Kotlin en code octet, puis je le décompile en Java. Je compile avec le compilateur Kotlin et décompile avec cfr .

Mon projet est ici .

Cela me permet de compiler ceci:

package functionsiiiandiiilambdas.functions.p01tailiiirecursive

tailrec fun findFixPoint(x: Double = 1.0): Double =
        if (x == Math.cos(x)) x else findFixPoint(Math.cos(x))

Pour ça:

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);
  }
}
4
Tomas Bjerre

Comme @ louis-cad a mentionné "source Kotlin -> code d'octet Java -> source Java" est la seule solution à ce jour.

Mais je voudrais mentionner le chemin que je préfère: utiliser décompilateur Jadx pour Android .

Cela permet de voir le code généré pour les fermetures et, comme pour moi, le code résultant est "plus propre" que celui du décompilateur IntelliJ IDEA.

Normalement, quand j'ai besoin de voir le code source Java de n'importe quelle classe Kotlin, je le fais:

  • Générer apk: ./gradlew assembleDebug
  • Ouvrez apk en utilisant l'interface graphique de Jadx: jadx-gui ./app/build/outputs/apk/debug/app-debug.apk

Dans cette interface graphique, la fonctionnalité de base IDE fonctionne: recherche de classe, déclaration de clic à aller. etc.

De même, tout le code source pourrait être sauvegardé puis visualisé à l'aide d'autres outils comme IntelliJ IDEA.

3
Alex
  1. ouvrir le fichier kotlin dans Android studio
  2. aller aux outils -> kotlin -> bytecode kotlin
  3. dans la nouvelle fenêtre qui s'ouvre à côté de votre fichier Kotlin, cliquez sur le bouton Décompiler. cela créera Java équivalent de votre fichier kotlin.
2
user8961393