在Java中访问父类的每个子类

nam*_*ked 5 java reflection

我必须实现一个逻辑,给定一个子类,我需要访问它的父类和该父类的所有其他子类,如果有的话.我没有在Java Reflection中找到任何允许我们访问父类的所有子类的API.有什么办法吗?

例如:

class B extends class A
class C extends class A
Run Code Online (Sandbox Code Playgroud)

现在使用B类,我可以通过调用找到超类getSuperClass().但是,有了父类,即B类和C类,有没有办法找到所有的子类?

Bal*_*usC 12

如果这不是功课(其中第三方librares可能是不允许的),我会建议谷歌的思考 " Reflections#getSubTypesOf().

Set<Class<? extends A>> subTypes = reflections.getSubTypesOf(A.class);
Run Code Online (Sandbox Code Playgroud)

您可以通过自己扫描类路径来自己做更少或更多,从ClassLoader#getResources()您传递""的名称开始.


cle*_*tus 5

你是对的:没有直接的API.我猜你可以扫描所有加载的类,看看它们是否是给定类的子类.

一个问题:你只能找到已加载的类.这些方法都不会找到尚未加载的类.