【发布时间】:2015-02-01 15:00:43
【问题描述】:
您可以从B 类型继承A 类型,但无论何时定义A 类型,您都将免费获得A? 类型(可为空)。但它究竟在类型层次结构中的什么位置呢? A? 继承自 A 或其他方式?
我问这个是因为我对这样的代码感到困惑:
open class Foo {
fun foo() : Int {
return 0;
}
}
fun test<T : Foo?>(x:T) : Int {
return x.foo() // (@)
}
fun main(args: Array<String>) {
println(test<Foo?>(null))
}
我不明白为什么要编译行 (@)?或者换句话说,那时我不了解可空类型层次结构,因为直到现在我将T 视为Foo? 或任何从它派生的类型。你能从可为空的类型派生出不可为空的类型吗?那意味着什么?
对不起,如果这很明显,我只是在学习 Kotlin。
(@) 对于可空类型,它应该是 x!!.foo()。
【问题讨论】:
标签: generics inheritance nullable kotlin