是否可以在类定义中添加可变数量的通用参数?
例如:
public class Test<E,T,U...>
构建对象实例时要定义的通用参数的确切数量。
答案 0 :(得分:0)
不,不可能,您可以做的是:
在构造函数
中定义通用BUT允许varargs
public class Deyen<T, G, M> {
private final T typo;
private final G typo22;
private final M[] typo3;
public Deyen(T typo, G typo22, M... typo3) {
this.typo = typo;
this.typo22 = typo22;
this.typo3 = typo3;
}
}
在定义类本身时显式定义vararg
并没有提出编译器......
答案 1 :(得分:0)
显然,您希望能够以varargs的形式使Test获取不同类型的多个参数。
VarArgs实际上是作为一个数组传递的,但你不能拥有一个包含不同类型对象的数组。
但是,我们不能采用单个参数,并且该参数类型包含每个单独的&#34;参数&#34;需要使用。
class TypedInstance<T>{
Class<T> type;
T instance;
}
或者
您要使用的每组参数的不同类。然后将该类作为参数传递。
class MultiTypedInstanceType1<T, R>{
public R doSomething(T t){ .... }
}
class MultiTypedInstanceType2<T, R, P>{
public R doSomething(T t, P p){ .... }
}
答案 2 :(得分:0)
在java中似乎不可能定义签名类型的重载,但在C#中可能可能是因为类型扩展。也许这是一个选择......
class Test<A,B> { }
class Test<A> { }
public class Program
{
public static void Main()
{
var one = new Test<string>();
var two = new Test<string, int>();
}
}
在这里,您重载类型Test
的签名,以采用与方法重载相同的方式获取一个或两个类型参数。 Here is a fiddle for that
不幸的是,您必须为所有变体创建几种类型,而不是通过变量参数列表来定义它们。