Модернизация с помощью качеств Котлина, которые включают реализованные методы

Черты хорошо работают с Retrofit, пока не реализован дополнительный метод. В зависимости от типа возврата RetrofitError: TwitchApi.someMethod: HTTP method annotation is required (eg, @GET, @POST, etc.). или java.lang.IllegalArgumentException: TwitchApi.someMethod: Must have either a return type or Callback as last argument. бросается.

Есть ли способ сделать retrofit игнорировать метод, который не аннотируется с любым из retrofit.http.GET / PUT / ... ?

 public trait SomeApi { GET("/endpoint") public fun getSomething(Query("user") user: String): Observable<SomeResponse> class object { public fun create(): SomeApi { val restAdapter = RestAdapter.Builder().setEndpoint("http://localhost").build() return restAdapter.create<TwitchApi>(javaClass<SomeApi >()) } } public fun someMethodThatBreaksRetrofit(user: String) : Int { return processResponse(getSomething(user)) } } 

Вы не должны так поступать. К счастью, в Kotlin вы можете использовать функции расширения, поэтому

 interface SomeApi { GET("/endpoint") fun getSomething(Query("user") user: String): Observable<SomeResponse> } fun SomeApi.someMethod(user : String) : Observable<Int> = processResponse(getSomething(user))