我是Java编程的新手,并试图了解注解在大型库中的工作方式。
有人能给我看一下代码片段吗?在代码片段中,reflect实际上是处理来自API服务接口的函数注解,我将其作为参数传递给reflect.create方法并基于此更改其行为?我的意思是:@GET,@POST等等
我创建了接口Giphy API服务,下一个功能:
@GET("gifs/search")
fun getSearchedGifs(
@Query("q") searchTerm: String,
@Query("limit") limit: Int = 50,
@Query("offset") offset: Int = 0,
@Query("rating") rating: String = "g",
@Query("lang") lang: String = "en",
@Query("bundle") bundle: String = "messaging_non_clips",
@Query("api_key") apiKey: String = "my api key"
): Call<DataResult>
这个函数有@GET(“gifs/search”)表示HTTP GET请求。
然后我使用这个接口在下面的代码中创建reflect对象的示例:
val retroService = retrofit.create(GiphyApiService::class.java)
我检查了reflect.create()方法和所有文件,但没有找到我的问题的答案
1条答案
按热度按时间polhcujo1#
Retrofit2使用dynamic proxy来实现接口,而不是生成代码。它使用反射解析你的方法,生成
SeriveMethod
方法并将它们缓存到serviceMethodCache
中。当调用接口的方法时,将调用已创建的
ServiceMethod
。