Kotlin类型与泛型不匹配

时间:2017-05-06 23:48:04

标签: generics kotlin nullable

我最近遇到了有关安全导航操作员(?.)和泛型的问题。

class A<T : Any?>(private var value: T) {
    fun function() {
        value?.let { 
            val notNull: Any = it
            //                 ^^
            // Type mismatch: 
            // Required: Any
            // Found:    T
        }
    }
}

我相信上面的代码应该没有问题,但它会产生上面显示的错误。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我认为你已经从你的例子中留下了一些东西来解决这个错误。所以我会猜测你正在努力实现的目标,如果我误解了你的意图,请原谅我。

class A<T : Any>(private val value: T?) { // T? instead of T to allow null value
  fun function() {
    value?.let {
      // *it* is already a non-null because you did a ?.let on a T? type
    }
  }
}