Gurupad Mamadapur [FH]
02/05/2020, 12:19 PMclass BaseResponse<T> {
val data: T? = null
var someMessage: String? = null
}
class User {
val name: String? = null
}
fun main() {
val name = getUser<User>().data?.name
println(name)
}
inline fun <reified R> getUser(): BaseResponse<R> {
return if (testMessage == null) {
BaseResponse<R>().apply { someMessage = "Some error" }
} else {
Gson().fromJson(
testMessage,
object : TypeToken<BaseResponse<R>>() {}.type
)
}
}
val testMessage: String? = """{"data": {"name":"Adam"},"someMessage":""}"""
Error -
Exception in thread "main" java.lang.ClassCastException: class com.google.gson.internal.LinkedTreeMap cannot be cast to class User (com.google.gson.internal.LinkedTreeMap and User are in unnamed module of loader 'app')
at MainKt.main(main.kt:54)
at MainKt.main(main.kt)
If I send BaseResponse<User> as R instead of just User and return R, it works fine. But I want to return BaseReponse<R>.Gurupad Mamadapur [FH]
02/05/2020, 12:19 PMspand
02/05/2020, 12:32 PM