2014-09-03 16 views
5

Ich versuche, das Beispiel von here in Kotlin zu implementieren. Ich bekomme diesen Fehler zur Laufzeit "verursacht durch: java.lang.IllegalArgumentException: Interface-Definitionen dürfen keine anderen Schnittstellen erweitern". Gibt es eine Möglichkeit, Kotlin-Merkmale als Java-Schnittstellen zu behandeln, wenn sie keine Methoden implementiert haben, oder muss ich Java-Schnittstellen verwenden? Hier ist der Code:Kotlin Traits und Retrofit

public trait RestAPI { 

    [GET("/weather")] 
    fun getList([Query("q")] place: String, 
       [Query("units")] units: String) 
      : Observable<WeatherData> 
}    

Und der Aufruf, der den Fehler verursacht:

val service = restAdapter?.create(javaClass<RestAPI>()) 
+0

Diskutiert ist Kotlins Problem Tracker: http://youtrack.jetbrains.com/issue/KT-5609 –

+1

@ user1202036 können Sie bitte überprüfen Sie die Antwort unten und akzeptieren Sie es, wenn es korrekt ist. Kotlin hat "Merkmal" in "Schnittstelle" umbenannt und die Semantik etwas verändert. Und das von @andrey oben erwähnte Problem wurde behoben. –

Antwort

7

Dieses Problem wurde behoben. Ich benutze Retrofit genau so implementiert mit Kotlin Version 0.9.976.