Ist es möglich, von Java-Code auf Erweiterungsfunktionen zuzugreifen?Zugriff auf die Kotlin-Erweiterungsfunktionen von Java aus
Ich habe die Erweiterungsfunktion in einer Kotlin-Datei definiert.
package com.test.extensions
import com.test.model.MyModel
/**
*
*/
public fun MyModel.bar(): Int {
return this.name.length()
}
Dabei ist MyModel
eine (generierte) Java-Klasse. Nun wollte ich es in meinem normalen Java-Code zuzugreifen:
MyModel model = new MyModel();
model.bar();
jedoch, dass nicht funktioniert. Die IDE erkennt die bar()
-Methode nicht und die Kompilierung schlägt fehl.
Was bedeutet Arbeit wird mit mit einer statischen Funktion von Kotlin:
public fun bar(): Int {
return 2*2
}
unter Verwendung import com.test.extensions.ExtensionsPackage
so meine IDE scheint richtig konfiguriert zu sein.
Ich habe die gesamte Java-Interop-Datei von den Kotlin-Dokumenten durchsucht und auch viel gegooglet, aber ich konnte sie nicht finden.
Was mache ich falsch? Ist das überhaupt möglich?
Bitte näher erläutern * funktioniert nicht *? Kompiliert es, löst eine Ausnahme aus oder was? Haben Sie auch 'Paket com.test.extensions.MyModel importieren'? – meskobalazs
@meskobalazs sehe meine bearbeitete Antwort. – Lovis
@meskobalazs auch, ich kann nicht einmal das importieren. Ich kann nur 'com.test.extensions.ExtensionsPackage' importieren. – Lovis