java - 如何仅使用类名加载类

标签 java class classloader dynamic-class-loaders

我需要使用 Java 的 Class.forName("") 来加载我的类之一。问题是我需要通过仅指定类名而不是完全限定的类名来加载类。

  1. 例如,这有效但不符合我的要求:

    Class.forName("反射.Person");

  2. 这是我需要的但不起作用:

    Class.forName("人");

有人知道如何让#2 工作吗?我只需要使用简单的类名。任何将遍历我的文件夹结构以检查该类是否存在的第 3 方工具?这将作为可执行 JAR 部署。

提前致谢。

最佳答案

你应该 get all classes on the classpath ,迭代它们并查看哪一个具有与所需名称相同的简单名称。然后使用完全限定名称执行 Class.forName(..)。请注意,可以在多个包中使用相同的名称。

你最好look for classes implementing an interfaceannotated with a specific annotation .依赖简单的名称可能会非常棘手,尤其是当您的类路径增长时。

关于java - 如何仅使用类名加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10341967/

相关文章:

java - Switch case 需要两次调用才能实际工作

java - 将 Maven 依赖项列表导出到 CSV

java - Gradle instrumentTest 的 AndroidManifest.xml

c++ - 构造函数错误

java - eclipse插件中的类加载

java - Junit中如何使用基类@BeforeMethod对所有测试用例执行for循环

jquery - 复选框和文本字段 jQuery

python - 为什么 `function` 不是 Python 中的关键字?

java - 如何从文件系统加载任意 java .class 文件并对其进行反射(reflect)?

java - NoClassDefFoundError 有时对于 System.out.close() 之后的标准类