创建具有可变数量的泛型类型的类



我想创建一个可以处理未定义数量的泛型类型的类,甚至可以用java吗?

这个奇怪问题背后的想法是创建一个元组,其大小固定在他的构造器中,其中位置i的每个元素都属于 posi%numberoftype的类型。

不,Java 中的类型具有固定数量的类型参数。

您可以获得的最接近的是拥有(有限(数量的相关类:

class Tuple1<A> { ... }
class Tuple2<A, B> { ... }
class Tuple3<A, B, C> { ... }

然后提供一个带有工厂方法的通用类:

class Tuples {
static <A> Tuple1<A> of(A a) { ... }
static <A, B> Tuple2<A,B> of(A a, B b) { ... }
static <A, B, C> Tuple1<A,B,C> of(A a, B b, C c) { ... }
}

正如Joachim所说,Java泛型类型具有固定数量的类型参数。 不支持可变数字。

AFAIK,JLS 没有明确说明这一点,但泛型类的 Java 语法只允许具有固定数量的参数的声明。

参见 JLS 8.1.2 给出了语法规则如下:

TypeParameters    ::= '<' TypeParameterList '>'
TypeParameterList ::= TypeParameter { ',' TypeParameter }

(我调整了元语法以区分语言符号元符号。


我不知道有任何主流编程语言支持具有可变类型参数数量的通用/参数化类型。 我怀疑对这种语言进行类型检查(如果存在的话(将具有挑战性。 而且,我怀疑这种语言功能会有许多合法的用例。 (但也许这只是我缺乏想象力...

最新更新