我想知道是否有可能有这样的事情:
public class foo<T...>
所以你可以像
一样调用这个类Foo<Object0>
Foo<Object0, Object1>
Foo<Object0, Object1, Object2>
使用Object 0,1和2不同的类型,如Integer,Float,String等。这是可能的,还是我必须为每种类型的泛型类型编写一个类?如果可以,我将如何处理不同的类型?
答案 0 :(得分:5)
不,你不能拥有它。你能做的最好的是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>
|
的{{1}}语法是不可能的。{/ p>
答案 1 :(得分:3)
使用以下格式定义泛型类:
class name<T1, T2, ..., Tn> { /* ... */ }
您必须指定类型参数T1,T2和Tn。
因此,class name<T...>
是不可能的。
答案 2 :(得分:1)
您在谈论varargs通用参数。
不,你不能。主要是因为没有办法引用类型,除非你使用了不支持的数组地址,如T[0]
等。