2012-01-04 81 views
0

我想在我的Java程序中列出/枚举(在运行时)实现给定接口的所有类,并检索类名。可能吗 ?我能怎么做 ?列出实现给定接口的包中的所有类

+0

[你如何找到Java中给定类的所有子类?](http://stackoverflow.com/questions/492184/how-do-you-find-all-subclasses-of-a- java中的给定类) – rsp 2012-01-04 16:18:18

+0

挑一个 http://stackoverflow.com/questions/435890/find-java-classes-implementing-an-interface和http://stackoverflow.com/questions/3123095/如何在类路径中找到所有实现界面 您可能需要微调结果.. – Jayan 2012-01-04 16:21:16

+0

清除@Jayan列出的问题的重复项 – parasietje 2012-01-04 16:39:32

回答

1

你应该用java Reflection

此链接提供了涵盖所有可以使用反射做的事的教程。你可以建立你的代码从那里

2

开始详细说明如何,使用反射做:

您可以Thread.currentThread().getContextClassLoader()开始。使用 作为路径包的名称,得到的资源:Enumeration<URL> resources = classLoader.getResources(path);

然后,你将不得不文件名从资源解码,并超过他们迭代(递归因为有些人可能是目录)。过滤.class文件的资源,使用Class.forName()实例化类并检查它们实现的接口。

相关问题