我想制作一个函数,该函数返回一个数据类型的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>
?我以前从未做过这种高级的泛型。
答案 0 :(得分:2)
您需要在函数的返回类型之前指定泛型类型:
public static <T> List<T> foo(T data) {
return new ArrayList<>();
}
答案 1 :(得分:0)
我忘记了您可以在返回类型之前添加一个类型。
<T> List<T> foo(T bar)
{
...
}