【类加载器】————类加载器之间的父子关系以及管辖范围【委托机制】

类加载器之间的父子关系以及管辖范围(类加载器采用委托机制)

【类加载器】————类加载器之间的父子关系以及管辖范围【委托机制】_第1张图片

1、得到和修改普通类的加载器

CLASSPATH指定的所有jar或目录采用AppClassLoader加载器加载

package com.xiaozhi.loader;

public class LoaderTest {

	public static void main(String[] args) {
		System.out.println(LoaderTest.class.getClassLoader().getClass().getName());
	}
}

【类加载器】————类加载器之间的父子关系以及管辖范围【委托机制】_第2张图片

将这个类打包成jar文件导出到jdk/jre/lib/ext目录下

【类加载器】————类加载器之间的父子关系以及管辖范围【委托机制】_第3张图片

运行结果变为

【类加载器】————类加载器之间的父子关系以及管辖范围【委托机制】_第4张图片

______________________________________________________________________________________________________


2、获取所有加载器

运行程序,这是因为第一个类加载器是BootStrap是C++代码写的,用java代码获取不到他的名字。

package com.xiaozhi.loader;

public class LoaderTest {

	public static void main(String[] args) {
		System.out.println(System.class.getClassLoader().getClass().getName());
	}
}

【类加载器】————类加载器之间的父子关系以及管辖范围【委托机制】_第5张图片

package com.xiaozhi.loader;

public class LoaderTest {

	public static void main(String[] args) {
		ClassLoader loader=LoaderTest.class.getClassLoader();
		while(loader!=null){
			System.out.println(loader.getClass().getName());
			loader=loader.getParent();
		}
	}
}
【类加载器】————类加载器之间的父子关系以及管辖范围【委托机制】_第6张图片

你可能感兴趣的:(类加载器)