【问题标题】:How can I get all subclasses of a class in Java? [duplicate]如何在 Java 中获取类的所有子类? [复制]
【发布时间】:2019-07-19 20:47:28
【问题描述】:

所以我有一个类A,并且有多个从类 A 扩展的类。我创建了这个类的一个实例,有没有办法让所有其他类扩展 A?

类似:

A a = new A();
a.getAllSubclasses();

我坚持这样做的唯一方法是扫描整个项目的所有类并将它们存储在一个列表中,然后手动检查每个类是否使用 instanceOf 从 A 扩展。

List<Class> classList;
classList.each{
    if(it instanceOf a)
        //do stuff
}

这似乎很糟糕,尤其是对于一个包含数百个类的大型项目。

【问题讨论】:

  • 你的意思是在一个项目内,是全球性的吗?

标签: java class reflection


【解决方案1】:

简单的答案是:是的,了解 X 类的“可访问”子类的唯一方法是扫描所有类的完整类路径,并为每个类检查是否它是 X 的子类。

请注意:当然,only 会告诉您该类路径中的子类。

换句话说:总是有范围的限制。如果你有两个不同的项目,你也可以在两个项目中都有一些 X 的子类,所以你必须扫描这两个“上下文”来了解它们。

【讨论】:

    【解决方案2】:

    有一个名为 org.reflections 的简单库提供有关子类的信息。使用这个库,你需要调用反射.getSubTypesOf(ClassName))。 在此处查看相应代码GitHub Code

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 1970-01-01
      • 2020-12-26
      • 2013-03-09
      • 2020-11-04
      • 2011-11-08
      • 2011-03-29
      • 1970-01-01
      • 2012-12-26
      相关资源
      最近更新 更多