generics - Kotlin 类型与泛型不匹配

标签 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
        }
    }
}

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

最佳答案

我认为您在示例中遗漏了一些内容以导致该错误。因此,我将猜测您真正想要实现的目标,如果我误解了您的意图,请原谅我。

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
    }
  }
}

关于generics - Kotlin 类型与泛型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43826465/

相关文章:

c# - 编译时错误 父类(super class)型集合引用所引用的子类型集合对象

java - 如何访问 ArrayList 的 ArrayList? (泛型?)

java - ArrayList 包含错误的类型对象,没有明确的原始类型转换

java - 升级应用程序以在 Java 中使用泛型有哪些注意事项?

android - 将 androidx.room 打包到 aar 库中的项目导致 java.lang.NoClassDefFoundError : Failed resolution of: Landroidx/room/RoomDatabase

c# - 如何检查 Point3d 是否不为空?

android - 在MVVM中,ViewModel总是必要的吗?

kotlin - 库中的基本协程网络调用

c# - 使用可为 null 的泛型参数创建列表

c# - 为什么我可以将 null 分配给类型 "struct Nullable<T>"的值而不是我的结构?