HashMap错误 – containsKey,get

任何人都可以点亮一下吗?

问题代码:

protected var table = HashMap<Class, Double>() if (table.containsKey(object)) { value = table.get(object) } 

containsKey(K):不推荐使用布尔值。 Map和Key具有不兼容的types。 上传到任何? 如果你确定的话

所以我改变了这个:

 if (table.containsKey(object as Any?) 

修复了错误,但这是我应该做的修复它吗? 或者,还有更好的方法?

还有.get(object)有一个错误:

types推断失败。 要求:kotlin。双重发现kotlin。双重?

同样的错误信息也是这样的:

 val c = someObject.javaClass // pre j2k code: final Class c = someObject.getClass(); weight = weightingTable[c] <-- error here 

我不知道在这里做什么

containsKey调用被报告为错误,因为您传递给它的参数的types与映射键的types不匹配。 你的地图包含类作为关键字,而你正试图传递一个对象实例给它。 改变这个object as Any? 是不是一个有用的修复,因为这个调用将编译,但将始终返回false。 你需要做的是使用object.javaClass来获取对象的类。

weightingTable[c]调用被报告为错误,因为映射不一定包含您传递给它的键的值,所以[]操作的结果是可以为空的。 您不能以某种方式处理空情况(使用检查,明确的非空转换或文档中涵盖的某些其他选项),将可为空的值分配给非空variables。