2016-08-08 25 views
0

Beispiel: In C-Code ist es möglich, Teile von Assembler-Code aufzurufen, wie:Kotlin-Integration in Java-Code?

int main() 
{ 
    //... stuff 
    __asm 
    { 
     lea ebx, hal 
     mov ecx, [ebx]hal.same_name ; 
     mov esi, [ebx].weasel  ; 
    } 
    // .. further stuff 
    return 0; 
} 

Ist ein solcher Code-Integration möglich Kotlin Code in Java (* .java-Dateien)?

(Ich spreche nicht über JNI oder C/C++ in Java!) Ich möchte bereits vorhandenen (AndroidStudio-) Java-Source-Code mit Kotlin Sprache erweitern.

//.. this is *.java file 
public class MyAlreadyExistingJavaClass { 

private int memberVar; 

public MyAlreadyExistingJavaClass() 
{ 

} 

// this is Kotlin within *.java file 
// extend this Java file with this constuctor in KOTLIN ? 
// would make above default constructor unneccessary. 
class MyAlreadyExistingJavaClass(number: Int = 0) 
{ 
    memberVar = number; 
} 

} 

Antwort

5

Java bietet keine Syntax zum Einbinden von Codeschnipsel in Kotlin oder einer anderen Sprache in eine Java-Datei. Dies ist jedoch nicht notwendig, um Ihre Aufgabe zu erfüllen. Sie können einfach definieren den Konstruktor Sie als eine Fabrik-Funktion benötigen in einer separaten Datei Kotlin:

fun MyAlreadyExistingJavaClass() = MyAlreadyExistingJavaClass(0) 

Wenn Sie eine neue Methode definieren möchten, anstatt einen Konstruktor, können Sie extension functions verwenden.

0

Ich bin ein Groovy-Entwickler, kein Kotlin Entwickler, aber es sieht aus wie Kotlin provides a scripting API. Groovy, JavaScript und JRuby können alle aus einer Java-Klasse mit der Java ScriptEngine API aufgerufen werden. Sie möchten etwas ähnliches, um Kotlin in einer Java-Klasse zu approximieren. Ich sage ungefähr, weil es nicht direkt wie dieses Assembly-Beispiel ausgeführt würde, sondern durch eine ScriptEngine-konforme Kotlin-Implementierung geleitet würde.

+1

Wer auch immer meinen Kommentar gewählt hat, warum liefern Sie keine bessere Antwort. Sie sollten verdammt gut wissen, dass Java Kotlin-Code nicht so einbinden kann und erwarten, dass es kompiliert wird und dass dies der nächste Ansatz ist, den der Java-Compiler unterstützt. –