Animal myAnimal = new Animal();
Run Code Online (Sandbox Code Playgroud)
我上面有这个代码.据我所知,它会做这些事情:
我不明白的是
有人能解释一下吗?提前致谢.
这是java.util.HasMap类中的keySet()函数:
public Set<K> keySet() {
Set<K> ks = keySet;
if (ks == null) {
ks = new KeySet();
keySet = ks;
}
return ks;
}
Run Code Online (Sandbox Code Playgroud)
在评论中,它说这个功能
返回此映射中包含的键的{@link Set}视图.该集由地图支持,因此对地图的更改将反映在集中,反之亦然.
因此,我期望KeySet类型的对象,此函数返回的对象将包含对"视图键"的引用.但是,当我查看代码时,KeySet类根本不包含任何字段及其所有超类.
final class KeySet extends AbstractSet<K> {
public final int size() { return size; }
public final void clear() { HashMap.this.clear(); }
public final Iterator<K> iterator() { return new KeyIterator(); }
public final boolean contains(Object o) { return containsKey(o); }
public final boolean remove(Object key) {
return removeNode(hash(key), key, null, false, true) …Run Code Online (Sandbox Code Playgroud)