2014-09-03 22 views
5

Próbuję zaimplementować przykład z here w Kotlinie. Otrzymuję ten błąd w czasie wykonywania "Powodowane przez: java.lang.IllegalArgumentException: Definicje interfejsu nie mogą rozszerzać innych interfejsów". Czy istnieje sposób traktowania cech Kotlina jako interfejsów java, gdy nie mają one żadnych zaimplementowanych metod, czy też muszę używać interfejsów java? Oto kod:Cechy kotła i modernizacja

public trait RestAPI { 

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

a rozmowa, która powoduje błąd:

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

Omówiono śledzenie problemu Kotlin: http://youtrack.jetbrains.com/issue/KT-5609 –

+1

@ user1202036 proszę przejrzeć odpowiedź poniżej i zaakceptować ją, jeśli jest dokładna. Kotlin zmienił nazwę na 'trait' na' interface' i nieco zmienił semantykę. Problem rozwiązany powyżej @ andrey został rozwiązany. –

Odpowiedz

7

Ten problem został naprawiony. Używam Retrofitu zaimplementowanego w ten właśnie sposób z Kotlin w wersji 0.9.976.