查找实现特定接口的所有类

查找实现特定接口的所有类,第1张

查找实现特定接口的所有类

我有一个类似的需求,我想确保所创建的实现某个接口的所有类始终可真正序列化。我创建了一个JavaClassFinder,它遍历了类路径中的所有目录,并找到了可分配给我关心的接口的所有类。这是一个代码片段:

public <T> List<Class<? extends T>> findAllMatchingTypes(Class<T> toFind) {    foundClasses = new ArrayList<Class<?>>();    List<Class<? extends T>> returnedClasses = new ArrayList<Class<? extends T>>();    this.toFind = toFind;    walkClassPath();    for (Class<?> clazz : foundClasses) {        returnedClasses.add((Class<? extends T>) clazz);    }    return returnedClasses;}

如果有帮助,我很高兴与您分享代码。唯一的缺点是,这只会处理.class文件-
我没有添加功能来解压缩.jars并从那里读取类文件。(但是添加它并不是一个大项目。)

更新:
我检查了上面的源代码,发现它取决于我们标准实用程序库中的许多帮助程序类。为了简化 *** 作,我压缩了所有需要的代码,您可以从JavaClassFinder.zip下载这些代码。这将直接在Eclipse中进行设置,您可以获取所需代码的任何部分。

您将在项目中找到一个名为JavaClassFinderTest.java的JUnit3测试,该测试向您显示JavaClassFinder类的功能和用法。运行Junit测试所需的唯一外部依赖项是Junit。

该实用程序的基本用法:

    JavaClassFinder classFinder = new JavaClassFinder();    List<Class<? extends MyTagInterface>> classes = classFinder.findAllMatchingTypes(MyTagInterface.class);

这将为您提供一个列表,其中包含可从“ MyTagInterface.class”分配的类路径中的所有类(例如)。希望这可以帮助。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5488705.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存