【问题标题】:Reflections doesn't find object subtypes反射找不到对象子类型
【发布时间】:2019-12-18 01:48:02
【问题描述】:

我正在尝试通过使用反射来获取包中的所有类。 当我使用具体类的代码(本例中为 A)时,它可以工作并打印子类信息(B 扩展 A,因此它打印 B 信息),但是当我将它与 Object 类一起使用时,它不起作用。我该如何解决?

此代码有效:

Reflections reflections = new Reflections(REFLECTION_PACKAGE);
Set<Class<? extends A>> allClasses = reflections.getSubTypesOf(A.class);

System.out.println("numberOfLCasses: " + allClasses.size());
System.out.println("classes: " + allClasses.toString());

这段代码没有:

Reflections reflections = new Reflections(REFLECTION_PACKAGE);
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class);

System.out.println("numberOfLCasses: " + allClasses.size());
System.out.println("classes: " + allClasses.toString());

【问题讨论】:

  • Reflections 的导入是什么?
  • 输出是什么
  • 是的,你必须使用库:
  • org.reflectionsreflections0.9.11
  • 它说有 0 个类

标签: java reflection


【解决方案1】:

这是documented behavior

公共 SubTypesScanner()

创建了新的 SubTypesScanner。将排除直接 Object 子类型

public SubTypesScanner(boolean excludeObjectClass)

创建了新的 SubTypesScanner。

参数: excludeObjectClass - 如果为 false,则在结果中包含直接 Object 子类型。

下面应该返回Object.class的子类型

Reflections reflections = new Reflections(REFLECTION_PACKAGE,new SubTypesScanner(false));
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class);

System.out.println("numberOfLCasses: " + allClasses.size());
System.out.println("classes: " + allClasses.toString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 2015-09-26
    • 2018-02-10
    • 1970-01-01
    • 2013-10-06
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多