gpt4 book ai didi

kotlin - 如何获得像 BaseResponse> 这样的通用类的 KClass

转载 作者:行者123 更新时间:2023-12-02 12:39:07 26 4
gpt4 key购买 nike

如果我试图得到

BaseResponse<Iterable<User>>::class

我得到错误错误,类文字的左侧只允许类。我已经搜索过,但仍然没有找到如何在 kotlin 中获取泛型类的类型。

最佳答案

你不能 - KClass 只能描述类 BaseResponse ,你可以得到一个 KClass 实例,它用 BaseResponse::class 来实现。

但是,您拥有的 BaseResponse<Iterable<User>> 是一个具体类型,您可以将其表示为 KType 实例。例如,可以使用 KType 函数创建 createType 实例。这看起来像这样:

// 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 中还有工厂方法可以根据需要创建协变或逆变类型。

关于kotlin - 如何获得像 BaseResponse<Iterable<User>> 这样的通用类的 KClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com