【发布时间】:2013-11-09 22:58:59
【问题描述】:
class A <T> {
private T field;
}
我知道我可以使用 将类型参数强制为某种有界类型,但是如何强制类型参数 T 仅为 String、Integer、SomeClassB、SomeEnumC 而不是可以用其他参数对其进行参数化吗?
A<SomeClassB> a = new A<SomeClassB>();
是合法的。
A<SomeClassX> a = new A<SomeClassX>();
将是非法的。
我已经尝试使用
测试这些类型T instanceof SomeEnumC
在A类的构造函数中,但是很乱。
【问题讨论】:
-
你不能完全按照你的要求去做。你为什么还要呢?这些类的唯一共同方法是来自
Object的方法。 -
T instanceof SomeEnumC不应该工作。泛型类型信息只存在于编译时,因此没有T的类型信息可供instanceof 运算符在运行时使用。
标签: java generics types parameters