2014-03-07 69 views
2

我是Java新手,面臨一些我無法理解的代碼。
下面是一些方法聲明:這種方法簽名是什麼意思?

public <V> void method(Map<T,V>) 

我讀過有關泛型在Java中,找不到任何說明的部分public <V> void
任何人能解釋這是什麼意思?

+0

http://docs.oracle.com/javase/tutorial/java/generics/methods.html –

回答

4

這是一種通用方法。它定義了一個名爲<V>的方法範圍類型。

此外,它使用的類型<T>可能有一個類作用域。

例如,假設您有此類,通過某種類型<T>進行參數化。

public class Something<T> { 
    private T key; 

    public Something(T key) { 
     this.key = key; 
    } 

    public <V> V getValueForKey(Map<T, V> map) { 
     return map.get(key); 
    } 
} 

getValueFromKey()方法定義了一個<V>類型,它會在所提供的地圖,對應於key構件返回對象。只是爲了澄清:爲了提供一個很好的例子,我使用的返回類型將是<V>而不是void,但這並不重要。

因此,舉例來說,如果您有:

Map<String, Integer> map = new HashMap<String, Integer>(); 
map.put("One", 1); 
map.put("Two", 2); 

Something<String> something = new Something<String>("One"); 
Integer value = something.getValueForKey(map); 

那麼getValueForKey()將返回Integer,因爲這是類型提供Map

0

A Map<T, V>保存類型爲T的鍵和類型爲V的值。該方法必須知道撥打電話時是哪種類型的TV。它接縫T已被該方法調用的實例給出,但V未知。因此,public <V> void method表示調用方法時,調用方必須提供V的類型。