我需要使用 Java 的 Class.forName("") 来加载我的一个类。问题是我需要通过只指定类名而不是完全限定的类名来加载类。
例如,这可行,但不符合我的要求:
Class.forName("reflection.Person");
这就是我需要但不起作用的东西:
Class.forName("人");
任何人都知道如何让#2工作?我只需要使用简单的类名。任何第 3 方工具将遍历我的文件夹结构以检查该类是否存在?这将被部署为一个可执行的 JAR。
提前致谢。
我需要使用 Java 的 Class.forName("") 来加载我的一个类。问题是我需要通过只指定类名而不是完全限定的类名来加载类。
例如,这可行,但不符合我的要求:
Class.forName("reflection.Person");
这就是我需要但不起作用的东西:
Class.forName("人");
任何人都知道如何让#2工作?我只需要使用简单的类名。任何第 3 方工具将遍历我的文件夹结构以检查该类是否存在?这将被部署为一个可执行的 JAR。
提前致谢。
您应该获取 classpath 上的所有类,对它们进行迭代并查看哪个类的简单名称与所需的名称相同。然后Class.forName(..)
使用完全限定名称。请注意,可以在多个包中使用相同的名称。
您最好寻找实现接口或使用特定注释进行注释的类。依赖简单的名称可能非常棘手,尤其是当您的类路径增长时。
您需要了解像“Person”这样的类名的含义取决于它在源代码中出现的位置。Java 编译器的便利之处在于不需要到处都使用完全限定的类名。但是在运行时,在字节码中,所有类名都是完全限定的。