在包事先未知的情况下,反射加载java类

byqmnocz  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(251)

我一直在使用下面的代码加载我知道要加载包的类。

ClassLoader classLoader = ClassLoader.getSystemClassLoader();

Class<?> myClass = classLoader.loadClass(classNameToBeLoaded);

现在文件夹/包结构发生了变化。
变量 classNameToBeLoaded 可以来自任何我事先不知道的包,因为类名来自用户提供的excel表。
例如,classnametobeloaded的值可以是从excel文件读取的“utils”、“filevalidation”等。
这个类可以来自不同的包,比如“com.iyaffle.utils”或者“com.testing.validation”等等。
当我们不知道包名时,如何使类自动加载?
其他没有具体答案的类似线索:
在不知道包名的情况下加载特定文件夹中的所有类-java

3qpi33ja

3qpi33ja1#

您确实需要知道加载类的完全限定名,有许多类具有相同的类名,唯一使它们保持不同的是包名。
一个很好的例子如下:
java.awt.list文件
java.util.list
如果类没有您需要调用的公共方法,您可以像现在这样加载它们,但要添加包名。
调用公共方法最安全的方法是拥有一个静态接口或抽象类,所有动态类都将扩展该接口或抽象类,这样就可以将动态加载的类示例视为实现公共方法的示例。

相关问题