gpt4 book ai didi

java - Kotlin `this` 未在继承类中返回正确的实例

转载 作者:行者123 更新时间:2023-11-29 04:24:27 25 4
gpt4 key购买 nike

我有两个类(class)。一个是另一个的 parent 。我正在 Foo 内部实例化 HashMap 的一个对象,并尝试访问该对象,但是在类 Bar 中,我得到了对 presenter as Map 的引用,而不是 presenter as HashMap 所以我的 HashMap 方法调用都不起作用。

我读过 docs并尝试像在 Java 中那样在 init{...} 内部指定 this.presenter,但我似乎仍然无法从内部访问 HashMap<>子类。

open class Foo {
var presenter = Map<>

init {
presenter = HashMap<>
}

}

open class Bar : Foo() {
//this is trying to call .put on the Map interface, so I get an error
presenter.put(someData)

}

最佳答案

您必须将类型指定为 MutableMap,同时指定您的 Map 的类型:

open class Foo<K,V> {
val presenter: MutableMap<K,V> = HashMap()
}
open class Bar : Foo<String,String>() {
//this is trying to call .put on the Map interface, so I get an error
fun doit(){
presenter.put("","")
}

}

您让编译器推断您的presenter 的类型,这是一个没有put 的只读映射。

关于java - Kotlin `this` 未在继承类中返回正确的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47084130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com