我想创建一个包含两种泛型类型的Java类。
public class BinaryContractInfo<T, U>
我希望U
成为同一类型的T
或T[]
。
基本上我想知道T extends T[]
是否反之亦然。然后我可以做类似
public class BinaryContractInfo<T, U extends T[]>
这可能吗?有没有办法做到这一点?
答案 0 :(得分:3)
您无法将类型指定为T
或T[]
而是可以使用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[]
而不是为它设置单独的类型参数?如果你不能,那就解释为什么你不能。