我有两节课。一个是另一个的父母。我在Foo中实例化了一个HashMap的对象,并尝试访问该对象,但是在类Bar中,我得到presenter as Map
而不是presenter as HashMap
的引用,所以我的HashMap方法都没有调用在工作中。
我已经阅读了docs,并尝试在Java this.presenter
中指定init{...}
,但我仍然无法访问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)
}
答案 0 :(得分:3)
您必须将类型指定为MutableMap
,并指定地图的类型:
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
的只读地图。