使用包括实施方法的Kotlin特征进行改造
只要没有额外的方法实现,性状就可以很好地与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.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))