我想知道是否有可能有这样的东西:
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]
不支持的数组地址等。