动态类加载
外观
导航 反射 主题: ) |
动态类加载允许加载程序启动前未知的 Java 代码。许多类依赖于其他类和资源,例如图标,这使得加载单个类变得不可行。因此,ClassLoader
(java.lang.ClassLoader
)用于管理一组类的所有内部依赖项。Java 模型根据需要加载类,并且不需要在加载和运行任何一个类之前知道集合中所有类的名称。
动态加载 Class
的一种简单方法是通过 java.net.URLClassLoader
类。此类可用于加载通过 URL 访问的 Class
或一组类。这与 java
可执行文件中的 -classpath
参数非常相似。要创建 URLClassLoader
,请使用工厂方法(因为使用构造函数需要安全权限)
代码部分 10.4:类加载器。
URLClassLoader classLoader = URLClassLoader.newInstance(
new URL[]{"http://example.com/javaClasses.jar"});
|
与其他动态类加载技术不同,即使没有安全权限,只要类来自与调用者相同的 Web 域,也可以使用此技术。获得 ClassLoader
实例后,可以通过 loadClass
方法加载类。例如,要加载类 com.example.MyClass
,可以使用以下方法:
代码部分 10.5:类加载。
Class<?> clazz = classLoader.load("com.example.MyClass");
|
从 Class
实例执行代码在动态调用章节中进行了说明。