我是Java新手,面臨一些我無法理解的代碼。
下面是一些方法聲明:這種方法簽名是什麼意思?
public <V> void method(Map<T,V>)
我讀過有關泛型在Java中,找不到任何說明的部分public <V> void
任何人能解釋這是什麼意思?
我是Java新手,面臨一些我無法理解的代碼。
下面是一些方法聲明:這種方法簽名是什麼意思?
public <V> void method(Map<T,V>)
我讀過有關泛型在Java中,找不到任何說明的部分public <V> void
任何人能解釋這是什麼意思?
這是一種通用方法。它定義了一個名爲<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
。
A Map<T, V>
保存類型爲T
的鍵和類型爲V
的值。該方法必須知道撥打電話時是哪種類型的T
和V
。它接縫T
已被該方法調用的實例給出,但V
未知。因此,public <V> void method
表示調用方法時,調用方必須提供V
的類型。
http://docs.oracle.com/javase/tutorial/java/generics/methods.html –