jdk 内置classloader

package j2se.classloader;

/**
 * <p>Project : J2SE的基础知识</p>
 * <p>Tile : 验证JDK内置的ClassLoader </p>
 * <p>Description : JDK 中内置的ClassLoader 
 *    1.bootstrap class loader 
 *    2.extension class loader
 *    3.application class loader
 *    4.other class loader
 *    5.每一个被 class loader  , loader 进来的 *.class 文件 , 如果
 *      站在Class 的角度来看 , 它们就是一个Class 类的对象 ;
 * </p>
 * <p>Date : 2014-03-19</p>
 * @author 
 * @version 1.0
 *
 */
public class TestJDKClassLoaders {
		
	/**
	 * @param args  类型为: String[]
	 * @return void 
	 */
	public static void main(String[] args){
		// 测试 使用 bootstrap class loader 进行加载 
		// 输出为 null 
		System.out.println(java.lang.String.class.getClassLoader()) ; 
		
		// 测试使用 extension class loader 进行加载 
		// 输出为 sun.misc.Launcher$ExtClassLoader
		System.out.println(sun.net.spi.nameservice.dns.DNSNameService.class.getClassLoader().getClass().getName());
		// 输出为 ExtClassLoader
		System.out.println(sun.net.spi.nameservice.dns.DNSNameService.class.getClassLoader().getClass().getSimpleName()); 
		
		// 测试使用 application class loader 进行加载 
		// 输出为 sun.misc.Launcher$AppClassLoader
		System.out.println(TestJDKClassLoaders.class.getClassLoader().getClass().getName()) ; 
		
		// 输出为sun.misc.Launcher$AppClassLoader@2712ee9
		System.out.println(ClassLoader.getSystemClassLoader()) ; 
		
		TestJDKClassLoaders.testClassLoaderParentRelation() ;
	}
	
	/**
	 * @description:通过测试 ClassLoader 类中的 .getParent() 方法 , 来获得 class loader 对象之间的关系 
	 *              1.每一个class loader 对象 都有一个引用 , 指向了父 class loader 对象 , 我们可以通过
	 *                getParent() 方法 拿到这个引用  ;
	 *              2.class loader 在加载 class 的时候 , 会先问一下它的上层 class loader 是否加载过 , 如
	 *                果加载了, 就不会再加载了 ;  
	 */
	public static void testClassLoaderParentRelation(){
		System.out.println("------- in testClassLoaderParent methods ------------") ;
		ClassLoader cl = TestJDKClassLoaders.class.getClassLoader() ;
		
		while(null != cl){
			System.out.println(cl.getClass().getName()) ;
			cl = cl.getParent() ;			
		}
	}

}

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页