代码片段
fun main() {
val myClass : AbsClass<Any> = MyClass()
// Error - type mismatch
val myClass : AbsClass<*> = MyClass()
// Not Error, but parameter of 'foo' is 'Nothing'
val myClass : AbsClass<Any> = MyClass() as AbsClass<Any>
// It's correct works with unchecked cast warning and unnecessary casting code.
myClass.foo(MyModel())
}
class MyClass() : AbsClass<MyModel>() {
}
abstract class AbsClass<T> {
fun foo(value:T){}
}
data class MyModel(val number:Int = 0)
问题
我想编写代码,val myClass : AbsClass<Any> = MyClass()
但是它显示类型不匹配错误。如何解决这个问题(避免类型转换代码as AbsClass<Any>
)?