【问题标题】:What is the place in type hierarchy of nullable types?可空类型的类型层次结构中的位置是什么?
【发布时间】: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


    【解决方案1】:

    这是编译器中的一个错误。当T 具有可为空的上限时,您不应调用T 的成员。 X?X 的超类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多