在Kotlin中,如何从字符串中获取类并将其分配给具有超类类型的变量?
现在我用的是这句话:在Kotlin中,如何从字符串中获取类并将其分配给具有超类类型的变量?,kotlin,Kotlin,现在我用的是这句话: klass=Class.forName({MyClassName}).kotlin作为KClass 但我得到了一个“未经检查的演员”警告 有更好的方法吗?我看不到避免此警告的方法,因为.kotlin是Class的扩展,这就是Class.forName()返回的内容(从Java翻译过来时)。所以你实际做的是这样的: Class.forName() -> Class<T: Any>.kotlin -> KClass<T: Any> as KC
klass=Class.forName({MyClassName}).kotlin作为KClass
但我得到了一个“未经检查的演员”警告
有更好的方法吗?我看不到避免此警告的方法,因为
.kotlin
是Class
的扩展,这就是Class.forName()
返回的内容(从Java翻译过来时)。所以你实际做的是这样的:
Class.forName() -> Class<T: Any>.kotlin -> KClass<T: Any> as KClass<{MySuperClassName}>
Class.forName()->Class.kotlin->KClass作为KClass
您正在将
KClass
强制转换为KClass
,这将始终产生警告,因为编译器无法判断MySuperClassName
是否实际上是t
的后代,因为此时t
可以是任何内容。此强制转换实际上不正确;类
不是类
。它只是不会抛出异常,因为正如警告所说,强制转换是未选中的。您可能需要的类型是Class
(基本上是指Class
)
修正类型不会修正警告,原因已在科德萨洛特爵士的回答中解释
但是你可以使用@Suppress(“UNCHECKED_CAST”)
因为没有更好的方法