在Java7和Java8中,HashMap的putAll()方法的行为是不同的
有这样的代码存在。
@Override
public Object put(Object key, Object value) {
// キーを小文字にする
return super.put(key.toString().toLowerCase(), value);
}
CustomHashMap map = new CustomHashMap();
map.putAll(valueMap); // Java7ではキーがすべて小文字になる
如果将Java7升级到Java8,那么Map的键不再保持小写,而是改变了以前的行为。
既然已经阅读了HashMap的代码,
-
- Java7では、putAll()からput()を呼び出している
- Java8では、putAll()からput()を呼び出していない
根据调查结果得知,问题的原因是没有调用Override的put方法。由于putAll没有进行Override,所以在Java7中偶然运行正常。或许是因为Java7的实现被阅读过。