两种类型的泛型类

时间:2011-07-16 15:00:46

标签: java generics

我想创建一个包含两种泛型类型的Java类。

public class BinaryContractInfo<T, U>

我希望U成为同一类型的TT[]

基本上我想知道T extends T[]是否反之亦然。然后我可以做类似

的事情
public class BinaryContractInfo<T, U extends T[]>

这可能吗?有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

您无法将类型指定为TT[]而是可以使用varargs

public void method(T... ts);

可以称为

method(t);
method(t1, t2, t3);
T[] ts = 
method(ts);

对于返回类型,您可以指定

public T[] method();

如果调用者假定只有一个返回值

T t = method()[0];

答案 1 :(得分:1)

不,AFAIK,你不能这样做,更不用说数组和泛型不能很好地结合在一起。最简单的方法是将数组包装在集合类型(List非常薄包装器上的数组中),如果允许这样做的话。

另外,为什么不直接在代码中使用T[]而不是为它设置单独的类型参数?如果你不能,那就解释为什么你不能。