Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics 类型不匹配:推断的类型为V?但是收藏<;什么都没有>;预料之中 fun-someMethod(v:Any){ val fieldValue=get(Any()) 如果(fieldValue!=null&&fieldValue为可变集合&&v为集合){ fieldValue.addAll(v) } } 乐趣获取(对象:任何):任何?{ 待办事项() }_Generics_Kotlin - Fatal编程技术网

Generics 类型不匹配:推断的类型为V?但是收藏<;什么都没有>;预料之中 fun-someMethod(v:Any){ val fieldValue=get(Any()) 如果(fieldValue!=null&&fieldValue为可变集合&&v为集合){ fieldValue.addAll(v) } } 乐趣获取(对象:任何):任何?{ 待办事项() }

Generics 类型不匹配:推断的类型为V?但是收藏<;什么都没有>;预料之中 fun-someMethod(v:Any){ val fieldValue=get(Any()) 如果(fieldValue!=null&&fieldValue为可变集合&&v为集合){ fieldValue.addAll(v) } } 乐趣获取(对象:任何):任何?{ 待办事项() },generics,kotlin,Generics,Kotlin,上述代码返回以下错误: 错误:(115,39)Kotlin:类型不匹配:推断的类型是V?但是 人们期待着收集。投影类型可变集合 限制使用公共摘要fun addAll(元素:集合): kotlin.collections.MutableCollection中定义的布尔值 有办法解决这个问题吗?这是不变类型T的恒星投影的预期行为,如MutableCollection。从: 对于Foo,其中T是具有上限TUpper的不变类型参数,Foo相当于读取值的Foo和写入值的Foo 为什么会这样? 在Java中

上述代码返回以下错误:

错误:(115,39)Kotlin:类型不匹配:推断的类型是V?但是 人们期待着收集。投影类型可变集合 限制使用公共摘要fun addAll(元素:集合): kotlin.collections.MutableCollection中定义的布尔值


有办法解决这个问题吗?

这是不变类型
T
的恒星投影的预期行为,如
MutableCollection
。从:

对于Foo,其中T是具有上限TUpper的不变类型参数,Foo相当于读取值的Foo和写入值的Foo

为什么会这样?
在Java中,当您有一个
列表时
始终可以插入
null
,因为所有类型都可以为null,但在Kotlin中情况并非如此,这就是为什么您不能向
可变列表
添加任何内容。类似地,从Java
列表中提取的任何内容都将始终是
对象的子类型(因为每个非原语类型都扩展了
对象
)。在Kotlin中,您知道从
MutableList
中提取的任何内容都将始终是
TUpper
的子类型(或者
Any?
,如果您不指定上限,因为这是可用的最“通用”类型)

这是具有不变类型
T
的恒星投影的预期行为,如
MutableCollection
。从:

对于Foo,其中T是具有上限TUpper的不变类型参数,Foo相当于读取值的Foo和写入值的Foo

为什么会这样? 在Java中,当您有一个
列表时
始终可以插入
null
,因为所有类型都可以为null,但在Kotlin中情况并非如此,这就是为什么您不能向
可变列表
添加任何内容。类似地,从Java
列表中提取的任何内容都将始终是
对象的子类型(因为每个非原语类型都扩展了
对象
)。在Kotlin中,您知道从
MutableList
中提取的任何内容都将始终是
TUpper
的子类型(或者
Any?
,如果您不指定上限,因为这是可用的最“通用”类型)

fun someMethod(v: Any) {
    val fieldValue = get(Any())

    if (fieldValue != null && fieldValue is MutableCollection<*> && v is Collection<*>) {
        fieldValue.addAll(v)
    }
}

fun get(obj: Any): Any? {
    TODO()
}