我需要使用 Java 的 Class.forName("") 来加载我的类之一。问题是我需要通过仅指定类名而不是完全限定的类名来加载类。
例如,这有效但不符合我的要求:
Class.forName("反射.Person");
这是我需要的但不起作用:
Class.forName("人");
有人知道如何让#2 工作吗?我只需要使用简单的类名。任何将遍历我的文件夹结构以检查该类是否存在的第 3 方工具?这将作为可执行 JAR 部署。
提前致谢。
最佳答案
你应该 get all classes on the classpath ,迭代它们并查看哪一个具有与所需名称相同的简单名称。然后使用完全限定名称执行 Class.forName(..)
。请注意,可以在多个包中使用相同的名称。
你最好look for classes implementing an interface或 annotated with a specific annotation .依赖简单的名称可能会非常棘手,尤其是当您的类路径增长时。
关于java - 如何仅使用类名加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10341967/