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。