java - 如何使用反射库获取子类型的子类型

标签 java reflections

这是我的场景,我有三个类(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/

相关文章:

java - 从字符串数组中提取标记位置 - Java

java - 如何在Java中使用Selenium Webdriver获取标签值

maven - Google Reflections & Maven - 在 Maven 中找不到数据,但在 IDE 中工作

java - 从 WAR 文件中的 JAR 构建类路径

java - 反射返回带有空元素的集合

使用 Google Reflections 进行注解的 Java 扫描类

java - Android 应用程序强制关闭,没有显示任何错误

java - Spring 启动: how to use @PropertySource to point to a text file outside the jar?

java - JFrame 中自动建议的组合框

java - 为什么 Reflections.getFieldsAnnotatedWith() 不返回任何字段?