泛型-函数返回类型是否与参数类型相同?

时间:2018-07-17 01:51:48

标签: java generics

我想制作一个函数,该函数返回一个数据类型的List,该数据类型与传入的参数的数据类型相同。例如,我将这样调用该函数:

Object a = new Object();
List<Object> aList = foo(a);

Integer b = 5;
List<Integer> bList = foo(b);

因为我将Object传递给foo,所以它向我返回了List<Object>。当我通过Integer时,会提供List<Integer>

如果这不可能,我也可以使用如下语法:

Object a = new Object();
List<Object> aList = foo(Object.class, a);

之前我已经使用过泛型很多次了,但是我不知道如何在返回类型中定义数据类型,然后说该参数将使用相同的数据类型。

List<T> foo(T data)
{
   ...
}

还是必须像... List<T extends Object>?我以前从未做过这种高级的泛型。

2 个答案:

答案 0 :(得分:2)

您需要在函数的返回类型之前指定泛型类型:

public static <T> List<T> foo(T data) {
    return new ArrayList<>();
}

答案 1 :(得分:0)

我忘记了您可以在返回类型之前添加一个类型。

<T> List<T> foo(T bar)
{
    ...
}