我一直在使用下面的代码加载我知道要加载包的类。
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
Class<?> myClass = classLoader.loadClass(classNameToBeLoaded);
现在文件夹/包结构发生了变化。
变量 classNameToBeLoaded
可以来自任何我事先不知道的包,因为类名来自用户提供的excel表。
例如,classnametobeloaded的值可以是从excel文件读取的“utils”、“filevalidation”等。
这个类可以来自不同的包,比如“com.iyaffle.utils”或者“com.testing.validation”等等。
当我们不知道包名时,如何使类自动加载?
其他没有具体答案的类似线索:
在不知道包名的情况下加载特定文件夹中的所有类-java
1条答案
按热度按时间3qpi33ja1#
您确实需要知道加载类的完全限定名,有许多类具有相同的类名,唯一使它们保持不同的是包名。
一个很好的例子如下:
java.awt.list文件
java.util.list
如果类没有您需要调用的公共方法,您可以像现在这样加载它们,但要添加包名。
调用公共方法最安全的方法是拥有一个静态接口或抽象类,所有动态类都将扩展该接口或抽象类,这样就可以将动态加载的类示例视为实现公共方法的示例。