我想确定是否将字段键入为泛型类型的子类。
例如
Foo extends Bar<Foo>
Foo x;
如何判断字段x是否为Bar<Foo>
的子类型?
答案 0 :(得分:4)
Type genericSuperclass = x.getClass().getGenericSuperclass();
if (genericSuperclass instanceof ParameterizedType) {
Type[] types =
((ParameterizedType) genericSuperclass).getActualTypeArguments();
}
然后,您可以Class.isAssignableFrom
使用type instanceof Class
来验证它是否为Foo
。
即。
if (types[0] instanceof Class) {
if (x.getClass().isAssignebleFrom(((Class) type[0]))){
// do something
}
}