Java SE 6.0 API 说values()
方法 injava.util.HashMap
返回一个Collection
类型。JVM 如何决定在运行时返回哪个集合。它是特定于 jvm 的还是 Java 遵循的任何一般准则。我浏览了源代码,HashMap
但没有得到任何线索。非常感谢任何帮助,或者如果问题很蹩脚,请指出原因。谢谢。
问问题
3731 次
2 回答
11
您可以在来源中看到:
public Collection<V> values() {
if (values == null) {
values = new AbstractCollection<V>() {
...
他们实际上给出了AbstractCollection
.
关于这个集合需要了解的重要一点是它是不可序列化的:永远不要尝试在客户端-服务器之间按原样发送它。
请注意,此摘录来自 Sun JDK 源。这意味着它特定于供应商实施。
于 2013-06-18T14:39:29.723 回答
3
不是 JVM 决定在运行时返回哪个集合,而是 Map 接口的实际实现。如果是 HashMap,这是 HashMap.Values 内部类,请参阅 HashMap src
于 2013-06-18T14:46:16.423 回答