簡體   English   中英

Map.Entry的下一個方法?

[英]Map.Entry next method?

我正在查看JDK 7的源代碼-特別是WeakHashMap.java,該代碼得到了廣泛使用:

Entry<K,V> p = prev;
Entry<K,V> next = p.next;

但是接下來不是在Map.Entry上定義的方法(據我所知? http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html

從此調用此方法的位置是哪里?

WeakHashMap不是引用Map.Entry ,而是引用它自己的Map.Entry接口內部實現 ,即一個名為Entry的類。 該類具有一個名為next的字段,可以訪問該字段。

next不是功能。 它是直接訪問的類的成員變量。 通常,您會看到此信息(使用OO代碼)

public class Foo  
{  
    String bar;  

    public String getBar()  
    {   
        return this.bar;
    }  
}  

您看到的.next語法通常被稱為直接成員訪問,通常會被皺眉。

它是WeakHashMap內部的內部類,其中包含對Entry的引用。

private static class Entry<K,V> extends WeakReference<Object> implements Map.Entry<K,V>{
    V value;
    final int hash;
    Entry<K,V> next;

    Entry(Object key, V value, ReferenceQueue<Object> queue, int hash, Entry<K,V> next) {
    super(key, queue);
    this.value = value;
    this.hash  = hash;
    this.next  = next;

    // omit others...
}

在第682行中查看源代碼: http : //grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/WeakHashMap.java#WeakHashMap.Entry

對於HashMap,這是同一件事。 它具有相似的內部類:

static class Entry<K, V> implements Map.Entry<K, V>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM