如果我尝试获得
GridLayout
我收到错误错误,只允许在类文字的左侧使用类。我已经搜索过,但仍然找不到如何在kotlin中获取泛型类的类型。
答案 0 :(得分:2)
您不能-KClass
只能描述类BaseResponse
,并且可以获得一个KClass
实例,它用BaseResponse::class
来完成。
不过,您拥有的BaseResponse<Iterable<User>>
是一种具体类型,可以将其表示为KType
实例。例如,可以使用createType
函数来创建KType
个实例。看起来像这样:
// User
val userType = User::class.createType()
// Iterable<User>
val iterableOfUserType = Iterable::class.createType(arguments = listOf(KTypeProjection.invariant(userType)))
// BaseResponse<Iterable<User>>
val responseType = BaseResponse::class.createType(arguments = listOf(KTypeProjection.invariant(iterableOfUserType)))
我选择使类型参数都是不变的,KTypeProjection
中还有工厂方法可以根据需要创建协变或反变类型。