在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的实现被阅读过。

bannerAds