如何使用不同的上限调用Kotlin中的方法?
e、 g.给定一个如何使用不同的上限调用Kotlin中的方法?,kotlin,Kotlin,e、 g.给定一个类如何调用/调用需要类的方法/构造函数,其中T:Enum fun handleAny(classOfT:Class){ if(classOfT.isEnum){ handleEnum(ClassSoft) } } fun handleEnum(classOfT:Class){/*…*/} 错误:推断类型T不是kotlin的子类型。Enum 在Java中,我可以执行未经检查的调用,但在Kotlin中,我似乎找不到类似的方法。目前,我发现了一个非常棘手的解决方法: private
类
如何调用/调用需要类的方法/构造函数,其中T:Enum
fun handleAny(classOfT:Class){
if(classOfT.isEnum){
handleEnum(ClassSoft)
}
}
fun handleEnum(classOfT:Class){/*…*/}
错误:推断类型T不是kotlin的子类型。Enum
在Java中,我可以执行未经检查的调用,但在Kotlin中,我似乎找不到类似的方法。目前,我发现了一个非常棘手的解决方法:
private enum class DummyEnum
fun <T> handleAny(classOfT: Class<T>) {
if (classOfT.isEnum) {
handleEnum(classOfT as Class<DummyEnum>) //absolutely any enum goes
}
}
fun <T : Enum<T>> handleEnum(classOfT: Class<T>) {
println(classOfT.toString())
}
私有枚举类dummeyenum
趣味手感(classOfT:Class){
if(classOfT.isEnum){
handleEnum(classOfT as Class)//任何枚举都会
}
}
趣味handleEnum(ClassSoft:Class){
println(classOfT.toString())
}
我们的想法是使用任何满足上限的泛型参数(让它成为dummeynum
)对类型进行未经检查的强制转换,然后在运行时将其删除
限制是解决方案不能正确地与具体化泛型一起工作:如果
handleEnum
具有具体化类型参数,它将被静态推断类型(dummeyenum
)所取代。FYI:除了我在下面创建的热键解决方法之外。
private enum class DummyEnum
fun <T> handleAny(classOfT: Class<T>) {
if (classOfT.isEnum) {
handleEnum(classOfT as Class<DummyEnum>) //absolutely any enum goes
}
}
fun <T : Enum<T>> handleEnum(classOfT: Class<T>) {
println(classOfT.toString())
}