2013-02-13 53 views
0

老實說,我不知道該怎麼谷歌:解釋的Java擴展...&語法在尖括號

public static <T extends Fragment & OnClickListener> SomeListFragment instantiate(
     T target, int requestCode, DataSource<ResultItem> dataSource, int position) { 

    SomeListFragment fragment = new ExposeListFragment(); 

    return fragment; 
} 

它在SomeListFragment類。 我明白這是一個返回SomeListFragment的靜態方法(作爲新的SomeListFragment()的替代方法),但括號內的內容是什麼?

<T extends Fragment & OnClickListener> 
+5

搜索Java中的泛型。 – 2013-02-13 16:59:14

回答

0

括號內的內容定義了用作目標參數類型的泛型類型T.它表示類型T可以是擴展Fragment類並實現OnClickListener接口的任何類型。

Google Java Generics for docs。

1

這是使用泛型的代碼。

在這種情況下,你會宣稱你SomeListFragment fooSomeListFragement<T> foo其中T是實現接口FragmentOnClickListener類。然後,當您撥打instantiate時,您傳入target參數的對象的類型爲T

0

小心! SomeListFragment在這裏沒有泛型參數!唯一的參數化類型是T target參考。程序員決定這個target參考應該已經實現了FragmentOnClickListener接口(雖然他沒有調用/使用方法體內部的target的任何方法)。

由於它是一種靜態方法,因此這是執行此操作的唯一方法。無法用泛型參數聲明類,因爲它總是與一個實例綁定在一起。