Jak przekonwertować plik źródłowy Kotlin na plik źródłowy Java

Mam plik źródłowy Kotlina, ale chcę go przetłumaczyć na Javę.

Jak mogę przekonwertować Kotlin na Java source?

Author: Andy Fedoroff, 2016-01-22

8 answers

Jak powiedział @Wadzim, w IntelliJ lub Android Studio, wystarczy wykonać następujące czynności, aby uzyskać kod Javy z Kotlina:

  1. Menu > Tools > Kotlin > Show Kotlin Bytecode
  2. Kliknij na Decompile Przycisk
  3. skopiuj kod Javy

Update:

Z najnowszą wersją (1.2+) wtyczki Kotlin możesz również wykonać bezpośrednio Menu > Tools > Kotlin -> Decompile Kotlin to Java.

 445
Author: Louis CAD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 09:17:26

Możesz skompilować Kotlina do kodu bajtowego, a następnie użyć Java disassemblera.

Dekompilacja może być wykonana wewnątrz IntelliJ Idea, lub przy użyciu FernFlower https://github.com/fesh0r/fernflower (dzięki @Jire)

Nie było zautomatyzowanego narzędzia, jak sprawdzałem kilka miesięcy temu (i żadnych planów na jeden AFAIK)

 40
Author: voddan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-05 14:27:05

Możesz przejść do Tools > Kotlin > Show Kotlin bytecode

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

 25
Author: Rasoul Miri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-25 06:52:59

Aby przekonwertować plik źródłowy Kotlin Na plik źródłowy Java, musisz (gdy jesteś w Android Studio):

  1. Naciśnij Cmd-Shift-a na Macu, lub naciśnij Ctrl-Shift-a na komputerze z systemem Windows.

  2. Wpisz szukaną akcję: Kotlin Bytecode i wybierz Show Kotlin Bytecode z menu.

Tutaj wpisz opis obrazka

  1. Naciśnij Decompile Przycisk na górze Kotlin Bytecode panel.

Tutaj wpisz opis obrazka

  1. teraz otrzymasz Dekompilowany plik Javy wraz z plikiem Kotlin w sąsiedniej karcie:

Tutaj wpisz opis obrazka

 10
Author: Andy Fedoroff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-23 05:35:44

Kompiluję Kotlina do kodu bajtowego, a następnie dekompiluję go do Javy. Kompiluję za pomocą kompilatora Kotlin i dekompiluję za pomocą cfr.

Mój projekt jest TUTAJ .

To pozwala mi skompilować to:

package functionsiiiandiiilambdas.functions.p01tailiiirecursive

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

Do tego:

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);
  }
}
 9
Author: Tomas Bjerre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-21 08:16:47

Jak @louis-cad wspomniał "Kotlin source - > Java' s byte code - > Java source " jest jak dotąd jedynym rozwiązaniem.

Ale chciałbym wspomnieć sposób, który preferuję: za pomocą Jadx decompiler dla Androida .

Pozwala zobaczyć kod generowany dla zamknięć i, jak dla mnie, wynikowy kod jest "czystszy", a następnie z IntelliJ IDEA decompiler.

Normalnie, gdy muszę zobaczyć kod źródłowy Javy dowolnej klasy Kotlina, którą robię:

  • Wygeneruj apk: ./gradlew assembleDebug
  • Otwórz apk używając JADX GUI: jadx-gui ./app/build/outputs/apk/debug/app-debug.apk

W tym GUI działa podstawowa funkcjonalność IDE: wyszukiwanie klas, Kliknij aby przejść do deklaracji. itd.

Również cały kod źródłowy może być zapisany, a następnie przeglądany za pomocą innych narzędzi, takich jak IntelliJ IDEA.

 5
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-11 13:08:50
  1. Otwórz plik kotlin w android studio
  2. Przejdź do narzędzia - > kotlin-> Kotlin bytecode
  3. w nowym oknie , które otworzy się obok Twojego pliku kotlin, kliknij przycisk dekompiluj . utworzy odpowiednik java Twojego pliku kotlin .
 3
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-05 10:54:09

Java i Kotlin działają na maszynie wirtualnej Java (JVM).

Konwersja pliku Kotlin do pliku Java obejmuje dwa kroki, tj. kompilację kodu Kotlin do kodu bajtowego JVM, a następnie dekompilację kodu bajtowego do kodu Java.

Kroki, aby przekonwertować plik źródłowy Kotlin na plik źródłowy Java:

  1. otwórz swój projekt Kotlin w Android Studio.
  2. Następnie przejdź do Narzędzia - > Kotlin - > Pokaż kod bajtowy Kotlina.

Tutaj wpisz opis obrazka

  1. będziesz Pobierz kod bajtowy swojego pliku Kotin.
  2. Teraz kliknij przycisk Dekompiluj, aby pobrać kod Javy z kodu bajtowego
 3
Author: Faxriddin Abdullayev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-04 06:07:00