这是我的场景,我有三个类(class):
public abstract class A {
public Set<Class<?>> getGrandChildren() {
Reflections reflections = new Reflections(this.getClass().getPackage().getName());
Set<Class<?>> grandChildren = reflections.getSubTypesOf(this.getClass());
return grandChildren;
}
}
public class B extends A {}
public class C extends B implements X {}
class D {
public B client = new B();
//I am trying to get all children of this class
client.getGrandChildren()
}
我的编译器提示以下类型:
Set<Class<?>> grandChilderen = reflections.getSubTypesOf(this.getClass());
我该如何解决这个问题?
最佳答案
最简单的方法是依赖 raw type
因为它失败了,因为它需要参数化类型的值(对应于签名 T
中的 public <T> Set<Class<? extends T>> getSubTypesOf(Class<T> type)
),您无法在此处提供该值,因为它是通用方法
public Set<Class<?>> getGrandChildren() {
Reflections reflections = new Reflections(this.getClass().getPackage().getName());
Set grandChildren = reflections.getSubTypesOf(this.getClass());
return grandChildren;
}
关于java - 如何使用反射库获取子类型的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39154117/