10

我想知道是否有可能有这样的东西:

public class foo<T...>

所以你可以像

Foo<Object0>
Foo<Object0, Object1>
Foo<Object0, Object1, Object2>

使用 Object 0、1 和 2 不同的类型,如 Integer、Float、String 等。这是可能的,还是我必须为每个泛型类型编写一个类?如果这是可能的,我将如何处理不同的类型?

4

3 回答 3

5

不,你不能拥有那个。你能做的最好的就是public class Foo<T extends SomeClassOrInterface>。因此,在您的示例中IntegerFloat您可以定义public class Foo<T extends Number>.

您还可以指定 T 必须实现多个接口。

语法public class Foo<T extends SomeInterface1 & SomeInterface2>有效,&有意义AND

public class Foo<T extends SomeInterface1 | SomeInterface2>不幸的是,|有意义的语法OR是不可能的。

于 2013-05-19T12:51:22.077 回答
3

泛型类使用以下格式定义:

class name<T1, T2, ..., Tn> { /* ... */ }

您必须指定类型参数 T1、T2 和 Tn。因此,class name<T...>是不可能的。

于 2013-05-19T12:40:13.793 回答
1

你在谈论一个可变参数泛型参数。

不,你不能。很大程度上是因为无法引用类型,除非您使用T[0]不支持的数组地址等。

于 2013-05-19T12:42:58.053 回答