我想知道是否有可能有这样的东西:
public class foo<T...>
所以你可以像
Foo<Object0>
Foo<Object0, Object1>
Foo<Object0, Object1, Object2>
使用 Object 0、1 和 2 不同的类型,如 Integer、Float、String 等。这是可能的,还是我必须为每个泛型类型编写一个类?如果这是可能的,我将如何处理不同的类型?
不,你不能拥有那个。你能做的最好的就是public class Foo<T extends SomeClassOrInterface>。因此,在您的示例中Integer,Float您可以定义public class Foo<T extends Number>.
您还可以指定 T 必须实现多个接口。
语法public class Foo<T extends SomeInterface1 & SomeInterface2>有效,&有意义AND。
public class Foo<T extends SomeInterface1 | SomeInterface2>不幸的是,|有意义的语法OR是不可能的。
泛型类使用以下格式定义:
class name<T1, T2, ..., Tn> { /* ... */ }
您必须指定类型参数 T1、T2 和 Tn。因此,class name<T...>是不可能的。
你在谈论一个可变参数泛型参数。
不,你不能。很大程度上是因为无法引用类型,除非您使用T[0]不支持的数组地址等。