Java SE 6.0 API说values()
中的java.util.HashMap
方法返回Collection
类型。 JVM如何确定在运行时返回哪个集合。它是jvm特定的还是Java遵循的任何一般准则。我浏览了HashMap
的源代码,但无法得到线索。任何帮助都是高度赞赏,或者如果问题是蹩脚的,请指出我为什么。谢谢。
答案 0 :(得分:11)
您可以在来源中看到:
public Collection<V> values() {
if (values == null) {
values = new AbstractCollection<V>() {
...
他们实际上提供了AbstractCollection
的自定义实现。
了解这个集合的一个重要事项是它不是Serializable:永远不要尝试在客户端 - 服务器之间发送它。
请注意,此摘录来自Sun JDK来源。这意味着特定于供应商实施。
答案 1 :(得分:3)
不是JVM决定在运行时返回哪个集合,而是Map接口的实际实现。在HashMap的情况下,这是HashMap.Values内部类,请参阅HashMap src