Java泛型返回类型语法

时间:2017-08-24 19:37:55

标签: java list generics

我正在尝试学习如何编写方法来返回未知类型的对象列表。我遇到过这个例子:

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>

4 个答案:

答案 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; /泛型声明:您声明通用类型的位置。我不认为它是结果类型的实际部分(可能是错误的)。