Kotlin 如何创建KClass的实例<;可变列表<;富<*&燃气轮机&燃气轮机>;?
由于类型擦除,我需要将类的类型作为参数传递Kotlin 如何创建KClass的实例<;可变列表<;富<*&燃气轮机&燃气轮机>;?,kotlin,Kotlin,由于类型擦除,我需要将类的类型作为参数传递 class Abc<T : Any>(private val clazz: KClass<T>) Abc类(私有val类:KClass) 当T类似于String时,我可以让它工作,但是当类型为KClass时,我在创建clazz的参数时遇到了问题 我试过做mutableListOf(),但后来我得到的是KClass,而不是KClass 如何创建我需要的KClass实例?如果需要构造Abc,使其方法最终采用并返回MutableL
class Abc<T : Any>(private val clazz: KClass<T>)
Abc类(私有val类:KClass)
当T类似于String
时,我可以让它工作,但是当类型为KClass
时,我在创建clazz
的参数时遇到了问题
我试过做mutableListOf()
,但后来我得到的是KClass
,而不是KClass
如何创建我需要的
KClass
实例?如果需要构造Abc
,使其方法最终采用并返回MutableList
,则可以强制转换它:
val abc = Abc(MutableList::class) as Abc<MutableList<Foo<*>>>
val abc=abc(可变列表::类)作为abc
(您可以将参数强制转换为KClass
,但这没有什么区别)
但正如Tenfour04的评论所说,MutableList
,MutableList
等的KClass
实例没有什么不同。因此:
Abc
和Abc
有实际不同的行为
ClassCastException
s远离原始强制转换成为可能
如果您需要构造一个
Abc
,使其方法最终获得并返回MutableList
,则可以强制转换它:
val abc = Abc(MutableList::class) as Abc<MutableList<Foo<*>>>
val abc=abc(可变列表::类)作为abc
(您可以将参数强制转换为KClass
,但这没有什么区别)
但正如Tenfour04的评论所说,MutableList
,MutableList
等的KClass
实例没有什么不同。因此:
Abc
和Abc
有实际不同的行为
ClassCastException
s远离原始强制转换成为可能
KClass不会携带有关类型的信息,因此您只能在没有类型的情况下使用
MutableList::class
。如果KClass
参数类型使用了T
,则泛型仅允许您创建Abc
。KClass不会包含有关该类型的信息,因此您只能在没有类型的情况下使用MutableList::class
。如果T
用于KClass
参数类型,则泛型仅允许您创建Abc
。