我正在尝试学习如何编写方法来返回未知类型的对象列表。我遇到过这个例子:
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 :(得分:4)
不返回类型:
public <T> List<T>
这只是意味着:T是这个方法的通用参数 !
您可以在方法上将类型参数放置在类 或上。你看 - 当你所有的其他方法确实需要泛型类型时......那么你只能将它用于像这样的单一方法。
请参阅here进一步阅读!
答案 1 :(得分: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>
。
答案 2 :(得分:0)
<T>
不是返回类型。它定义了该泛型方法的类型。查看参数列表,您还可以找到具有泛型typeinfo的类
答案 3 :(得分:0)
返回类型为IS List<T>
。
<T>
是&#34;模板&#34; /泛型声明:您声明通用类型的位置。我不认为它是结果类型的实际部分(可能是错误的)。