应用程序类加载器(Application Class Loader)是Java虚拟机默认使用的类加载器之一,也称为系统类加载器。其主要作用是从类路径中加载应用程序所需的类,包括程序自定义的类和系统API类。
具体来说,应用程序类加载器负责加载以下几种类:
-
程序指定的类:程序通过类名指定要加载的类,应用程序类加载器会搜索类路径,找到对应的.class文件并加载。
-
系统API类:Java的核心类库都是由Bootstrap类加载器加载的,在应用程序启动时就已在JVM中装载。
-
其他类加载器装载的类:其他自定义类加载器可能会装载某些类,这些类可以被应用程序类加载器所引用。
应用程序类加载器的使用攻略如下:
加载指定类
使用应用程序类加载器可以轻松加载与应用程序相关的类。例如,在以下示例中,我们将加载一个名为”Helloworld”的类:
public class App {
public static void main(String[] args) throws Exception {
ClassLoader appClassLoader = App.class.getClassLoader();
Class<?> cls = appClassLoader.loadClass("Helloworld");
System.out.println("Loaded class: " + cls.getName());
}
}
上述代码中,我们使用”App”类的类加载器获取”HelloWorld”类的字节码,从而实现”HelloWorld”类的加载,输出结果为:
Loaded class: Helloworld
加载资源文件
应用程序类加载器不仅可以加载类,还可以加载资源文件。假设我们在应用程序路径下有一个名为”test.properties”的资源文件,以下代码可以加载并读取该资源文件:
public class App {
public static void main(String[] args) throws Exception {
ClassLoader appClassLoader = App.class.getClassLoader();
URL url = appClassLoader.getResource("test.properties");
try (InputStream input = url.openStream()) {
Properties properties = new Properties();
properties.load(input);
System.out.println(properties.getProperty("name"));
}
}
}
我们使用应用程序类加载器获取资源文件的URL,将其作为InputStream打开,并将获取到的properties内容输出:
John
综上所述,应用程序类加载器能够很方便地加载应用程序所需的类和资源文件,是Java虚拟机中至关重要的一部分。