加载预先不知道包的Java类

时间:2017-09-04 10:05:13

标签: java reflection

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

ClassLoader classLoader = ClassLoader.getSystemClassLoader();

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

现在文件夹/包结构发生了变化。

变量classNameToBeLoaded可以来自我事先无法知道的任何包,因为类名来自用户提供的Excel工作表。

例如,classNameToBeLoaded的值可以是从Excel文件中读取的“Utils”,“FileValidation”等。

这个类可以来自不同的包,如“com.iyaffle.utils”或类似“com.testing.validation”或其他类似的东西。

当我们不知道包名时,如何自动加载类?

其他没有具体答案的类似帖子:

1 个答案:

答案 0 :(得分:1)

您确实需要知道要加载类的完全限定名称,有许多类具有相同的类名,唯一保持它们不同的是包名。

以下是一个很好的例子:

  • java.awt.List中
  • 的java.util.List

如果类没有您需要调用的常用方法,您可以像现在一样加载它们,但添加包名称。

调用常用方法最安全的方法是使用所有动态类扩展的静态接口或抽象类,以便可以将动态加载的类实例视为实现常用方法的实例。