2

这是我的场景,我有三个类:

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());

我该怎么做?

4

1 回答 1

2

最简单的方法是依赖它,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;
}
于 2016-08-25T20:36:49.840 回答