Java基础:类加载器

xiaoxiao2021-02-28  26

package com.cht.classLoader;

import java.util.Date; /** * java中默认的有三种类型加载器。 * 分别是:系统类加载器(应用类加载器)、扩展类加载器、引导类加载器。 * @author Cht_t * */ public class Test { public static void main(String[] args) {

/** * 系统类(应用)加载器 一般用户自定义 * 它负责加载Java的标准扩展,一般使用Java实现的, * 负责加载jre/lib/ext中的类。和普通的类加载器一样。 */ System.out.println(Test.class.getClassLoader()); //输出结果:sun.misc.Launcher$AppClassLoader@2a139a55 /** * 扩展类加载器 * 它负责加载Java的标准扩展,一般使用Java实现的,负责加载jre/lib/ext中的类。 * 和普通的类加载器一样。 */ System.out.println(Test.class.getClassLoader().getParent()); //输出结果:sun.misc.Launcher$ExtClassLoader@7852e922 /** * 引导类加载器 *它负责加载jdk中的系统类,是用C语言实现的。对于java程序无法获得它, *像上文中获得扩展类加载器的父类加载器是null。 *像String,Integer,Double类都是由引导类加载器加载的。 */ Date d = new Date(); System.out.println(d.getClass().getClassLoader()); System.out.println(String.class.getClassLoader()); //输出结果:null null /** * 类加载机制的原理是双亲委派机制。 * 当加载一个类时,首先把机会让给父类,先让父类加载,若是父类中不能加载,才会自己再加载。(这是孝顺型的,先想到父类) * 而那个Tomcat加载器则恰恰相反。 * 当加载一个类时,首先自己加载,自己加载不了,则再去找父类帮忙。(这个忘恩型的,先想到自己) */ }

}

转载请注明原文地址: https://www.6miu.com/read-2100247.html

最新回复(0)