欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java关于类加载器的简单学习

程序员文章站 2022-05-12 11:43:50
...

首先,类加载器本身也是一个类,类名就叫ClassLoader.

类加载器一共有三个子类,都属于负责加载类的对象。

1. AppClassLoader  : 应用类加载器,作用是加载用户自定义类

2.ExtClassLoader  : 扩展类加载器,作用是加载类库中的一些展类

3.BootStrapLoader : 引导类加载器,作用是加载 jdk提供的类.

下面还是要看一下代码:

package cn.itcast_类加载器;

public class Demo {
	
	public static void main(String[] args) {
		
		String s = "abc";
		
		ClassLoader c1 = Demo.class.getClassLoader();
		System.out.println(c1);//AppClassLoader
		
		System.out.println(c1.getParent());//ExtClassLoader
		System.out.println(c1.getParent().getParent());//BootStrapLoaderLoader
		
		System.out.println(String.class.getClassLoader());//BootStrapLoader
		
	}

}

上面代码的运行结果为:

Java关于类加载器的简单学习

此图包含了代码中四条输出语句的结果,第一、二行分别是AppClassLoader和ExtClassLoader的名字(虽然看起来像地址,但它们确实是名字),第三行和第四行输出为null,也就是说BootStrapLoader是无法获取的,因为BootStrapLoader这个类不是用Java语言编写的,而是用C/C++编写来的,所以BootStrapLoader的值为null,并不代表没有这个值,而是无法获取到这个值。因为String类型的类加载器是在JDK中的,所以获取的类加载器也为BootStrapLoader.

熟悉类加载器之前要了解一下反射机制,大家可以参考一下我之前写的《对Java中反射机制的理解》。

相关标签: Java 类加载器