2017-08-24 198 views
1

我在學習如何編寫一個方法來返回一個未知類型的對象列表。我曾經碰到過這樣的例子:Java泛型返回類型語法

public <T> List<T> list(Class<T> c, List<Object> objectList){   
    List<T> list = new ArrayList<>();  
    for (Object o : objectList){ 
     T t = c.cast(o); 
     list.add(t); 
    } 
    return list; 
} 

爲什麼返回類型<T> List<T>而不是簡單地List<T>

+0

因爲這是一種通用的方法。 –

+0

第一個''聲明瞭類型參數。只用'List ',必須存在名稱爲「T」的實際類。 – marstran

+0

具體的價值,[這個答案](https://stackoverflow.com/a/10149196/1079354)。 – Makoto

回答

3

這是因爲您的list方法有其自己的泛型類型參數。 <T>介紹這種類型的:

<T> List<T> list(Class<T> c, List<Object> objectList) 
^  ^   ^
|  +-------------+----- Use generic type 
+--------------------------- Introduce generic type argument for use in the method 

初始<T>當通用方法使用他們的封閉類的類型參數不是必需的。

+1

我喜歡你的ascii藝術.. p1! – GhostCat

4

也就是說返回類型:

public <T> List<T> 

這僅僅意味着:T是這一方法的泛型參數只是

只需在方法上,您可以將類型參數放置在上。你看 - 當你所有的其他方法都需要一個泛型類型時......那麼你可能只能用它來做這種單一的方法。

查看here供進一步閱讀!

0

<T>不是返回類型。它定義了該通用方法的類型。查看參數列表,您還可以找到一個具有通用類型信息的類別

0

返回類型IS List<T>

<T>是「模板」/泛型聲明:您聲明您的泛型類型。我不認爲它是結果類型的實際部分(可能是錯誤的)。