【问题标题】:List all classes in a package that implements a given interface列出实现给定接口的包中的所有类
【发布时间】:2012-01-04 16:12:46
【问题描述】:

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

【问题讨论】:

标签: java class interface implements


【解决方案1】:

详细说明如何使用反射来做到这一点:

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

然后您必须从资源中解码文件名,并对其进行迭代(递归,因为有些可能是目录)。过滤 .class 文件的资源,使用 Class.forName() 实例化类并检查它们实现的接口。

【讨论】:

    【解决方案2】:

    你应该使用 java Reflection

    此链接提供了一个教程,涵盖了使用反射可以做的所有事情。您可以从那里开始构建您的代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-13
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多