2017-08-24 156 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>是“模板”/泛型声明:您声明您的泛型类型。我不认为它是结果类型的实际部分(可能是错误的)。