JRR*_*JRR 0 java generics types
我想检查泛型类的实例化类型是否具有某些属性,例如:
class Foo<T> {
void bar () {
if (T instanceof Serializable) // does not compile
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道通用信息在运行时是否完全丢失了?这是否意味着没有办法完成我想做的事情?
这是否意味着没有办法完成我想做的事情?
你可以写:
class Foo<T> {
private final Class<T> clazz;
Foo (final Class<T> clazz) { // require creator to supply a Class<T>
this.clazz = clazz;
if (clazz == null) {
throw new NullPointerException();
}
}
void bar () {
if (Serializable.class.isAssignableFrom(clazz)) {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)