这个问题是由奇怪的 HashMap.put() 行为提示的
我想我理解为什么Map<K,V>.put
需要 aK
但Map<K,V>.get
需要 a Object
,似乎不这样做会破坏太多现有代码。
现在我们进入一个非常容易出错的场景:
java.util.HashMap<Long, String> m = new java.util.HashMap<Long, String>();
m.put(5L,"Five"); // compiler barfs on m.put(5, "Five")
m.contains(5); // no complains from compiler, but returns false
Long
如果值在int
范围内并且值相等,则不能通过返回 true 来解决这个问题吗?