apatrida
06/28/2016, 12:49 PMinterface TypeToken {
val type: Type
}
abstract class TypeReference<T> protected constructor(): TypeToken {
override val type: Type by lazy {
javaClass.getGenericSuperclass().let { superClass ->
if (superClass is Class<*>) {
throw IllegalArgumentException("Internal error: TypeReference constructed without actual type information")
}
(superClass as ParameterizedType).getActualTypeArguments()[0]
}
}
}