vmmv을 요즘 코틀린으로 공부중인데
제가 이런 문법은 잘 보지 않아서 ㅜㅜ 잘 모르겠습니다.. 도와주세요..
// 发现 - banner
@ApiFactory.BaseUrl("https://banner-storage-ms.juejin.im")
interface BannerStorage {
@GET("v1/get_banner")
fun getBanner(@Query("position") position: String,
@Query("page") page: Int = 0,
@Query("pageSize") pageSize: Int = 20,
@Query("platform") platform: String = "android"): Observable<Response<BannerListBean>>
}
object ApiFactory {
/**
* baseUrl of each Api
*/
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class BaseUrl(val value: String)
var okhttpClient = OkHttpFactory.client
private val mRetrofitBuilder: Retrofit.Builder by lazy {
Retrofit.Builder()
.client(okhttpClient)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
}
fun <T> getApi(clazz: Class<T>): T {
val baseUrl = clazz.getAnnotation(BaseUrl:: class.java).value
if(baseUrl.isEmpty())
throw IllegalArgumentException("@BaseUrl of ${clazz.simpleName} is empty")
Log.e("Test"," : " +baseUrl +" / " +clazz +" / " +mRetrofitBuilder.baseUrl(baseUrl).build().create(clazz))
return mRetrofitBuilder.baseUrl(baseUrl).build().create(clazz)
}
}
이와 같이 오브젝트를 @로 잡아두는데.. 사실ㅈ ㅔ가 @ 뜻은 잘 모르고... @null처리나 오버라이드정도만 그냥 있길래 봐왔지..
이게 무슨기능하는지 무엇이라 부르는지 잘 모르겠습니다 ㅜㅜ
그리고 BaseUrl 이렇게 유알엘을 적어두면 이 리스폰스가 어디로 가고...
@GET은 ... 무엇인지.. ㅜㅜ 잘 모르겠습니다..
자바에서 코틀린으로 넘어가니... 간편히 표현할 수있어서 좋은데.. is.. by.. 이런 부분에 뜻을 몰라서 하나씩 공부해야 하니.. ㅜㅜ 빠르게 넘어가려고 했는데 너무 힘드네요..
주저리 주저리.. 말이 길었네요.. 혹시 이부분좀 해석해주시면 감사하겠습니다...