Java 两种类型上的泛型类

Java 两种类型上的泛型类,java,generics,Java,Generics,我想创建一个具有两种泛型类型的Java类 public class BinaryContractInfo<T, U> 可能吗?有办法吗?您不能将类型指定为T或T[],而是可以使用varargs public void method(T... ts); 也可以称之为 method(t); method(t1, t2, t3); T[] ts = method(ts); 对于返回类型,可以指定 public T[] method(); 如果调用方假定只有一个返回值 T t =

我想创建一个具有两种泛型类型的Java类

public class BinaryContractInfo<T, U>

可能吗?有办法吗?

您不能将类型指定为
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];

不能将类型指定为
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];

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


另外,为什么不直接在代码中使用
T[]
,而不是为其使用单独的类型参数呢?如果你做不到,那就解释一下为什么你做不到。

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


另外,为什么不直接在代码中使用
T[]
,而不是为其使用单独的类型参数呢?如果你做不到,那么一定要解释为什么你做不到。

为什么要这样做。对不起,我觉得这不合逻辑。你能给我们提供更多关于这背后的推理的信息吗?我将不得不比较这两种类型。你能简单地使用一种泛型类型和方法重载,一种接受类型作为参数,另一种接受类型的数组吗?这两个方法中的代码是不同的,所以我看不出做您最初尝试做的事情有什么好处。对不起,我觉得这不合逻辑。你能给我们提供更多关于这背后的推理的信息吗?我将不得不比较这两种类型。你能简单地使用一种泛型类型和方法重载,一种接受类型作为参数,另一种接受类型的数组吗?这两个方法中的代码是不同的,因此我认为做您最初尝试做的事情没有任何好处。因为它也可以是
T
而不是
T[]
。所以创建一个新类型,它抽象了
T
T[]
之间的区别,并接受
T
类型的变量?另外,你能用客户端代码更新你的问题吗?例如,一个显示你将如何使用二进制合同的示例片段?因为它也可以是
T
,而不是
T[]
。所以创建一个新类型,它抽象了
T
T[]
之间的区别,并接受
T
类型的变量?另外,您是否可以使用客户机代码更新您的问题,例如,一个示例代码片段,显示您将如何使用二进制合同?