katz
11/14/2017, 11:11 AMsnrostov
11/14/2017, 11:11 AMkatz
11/14/2017, 11:12 AMsnrostov
11/14/2017, 11:12 AMsnrostov
11/14/2017, 11:15 AMabstract class TypeToken<T>
inline fun <reified T> typeOf(): Type? {
val token = object : TypeToken<T>() {}
return (token.javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0]
}
fun main(args: Array<String>) {
println(typeOf<Int>())
println(typeOf<List<Int>>())
}
prints
class java.lang.Integer
java.util.List<? extends java.lang.Integer>
katz
11/14/2017, 11:23 AMsnrostov
11/14/2017, 11:25 AMkatz
11/14/2017, 11:32 AMkatz
11/14/2017, 11:33 AMkatz
11/14/2017, 11:37 AMkatz
11/14/2017, 11:37 AMkatz
11/14/2017, 11:37 AMkatz
11/14/2017, 11:37 AMkatz
11/14/2017, 11:37 AMinline fun <reified T> typeToken() = object : TypeToken<ApiResponse<T>>() {}
katz
11/14/2017, 11:37 AMfun getCities() = request(typeToken<ArrayList<CityInfo>>(), "catalogue.Cities")
katz
11/14/2017, 11:37 AMprivate fun <T> request(outType: TypeToken<ApiResponse<T>>, method: String, token: String? = null, vararg params: Pair<String, Any>): Call<T>? {
katz
11/14/2017, 11:37 AM****model.ApiResponse<T>
snrostov
11/14/2017, 11:40 AMkatz
11/14/2017, 11:45 AMkatz
11/14/2017, 11:45 AMkatz
11/14/2017, 11:45 AMkatz
11/14/2017, 11:45 AM