假设你有这个代码:
Map<Foo, Bar> map = new HashMap<Foo, Bar>();
Foo foo = new Foo();
Bar bar = new Bar();
map.put(foo, bar);
Bar barReturned = map.get(foo);
Run Code Online (Sandbox Code Playgroud)
Java需要barReturned == bar吗?也就是说,它的Java 需要的是barReturned有相同的实例作为bar?如果没有,预计会有什么语义?
该Javadoc中表明,barReturned == bar必须是真实的,但我不是100%肯定的是:
V get(Object key)返回指定键映射到的值,或者
null此映射是否不包含键的映射.更正式地,如果此映射包含从键映射
k到一个值v,使得(key==null ? k==null : key.equals(k)),则此方法返回v; 否则它会返回null.(最多可以有一个这样的映射.)如果此映射允许
null值,则返回值null 不一定表示映射不包含键的映射; 地图也可能明确地将密钥映射到null.containsKey操作可用于区分这两种情况.参数:
key- 要返回其关联值的键返回:
值来指定键映射 …