HashMap.put()不兼容类型错误求助:Value[]无法转为Value
解决HashMap put方法的类型不兼容错误
这个错误的根源很明确:你方法的返回类型和HashMap.put()方法的返回类型不匹配。
咱们来拆解一下:
- 你的
array_memory是Map<String, Value[]>类型,所以调用put(id, array)时,这个方法会返回之前与id关联的旧值,也就是Value[]类型(如果是第一次存这个id,返回的是null)。 - 但你的方法声明的返回类型应该是
Value,这就导致了编译器报错:Value[]无法转换为Value。
根据你的需求,有两种常见的解决方式:
方式1:不需要返回旧值,改为无返回值方法
如果你的方法不需要返回之前的数组,直接把返回类型改成void即可:
public void storeArray(String id, Value[] array) { array_memory.put(id, array); }
方式2:返回旧数组,修正方法返回类型
如果你需要获取之前关联这个id的旧数组,就把方法的返回类型改成Value[],和put方法的返回类型保持一致:
public Value[] storeArray(String id, Value[] array) { return array_memory.put(id, array); }
额外提醒
如果你本来想返回刚存入的数组,那要注意:put方法不会返回你刚存入的新值,它只返回旧值。如果需要返回新数组,直接返回array就行:
public Value[] storeArray(String id, Value[] array) { array_memory.put(id, array); return array; }
内容的提问来源于stack exchange,提问作者blah
相关产品推荐
相关产品推荐

