JVM · 单选题 · 第 29 题
Java 后端开发面试 · 第 29 题
关于类加载的双亲委派模型,下列说法正确的是?
- A类加载器先尝试自己加载,只有自己加载失败了才会把请求交给父加载器
- B加载请求先委派给父加载器,父加载器加载不了才由自己加载,防止核心类被篡改
- C应用自定义的类加载器可以正常加载自己编写的 java.lang.String 来替换核心类
- D同一个类由两个不同的类加载器加载后,JVM 仍然认为它们是同一个类型
答案
B B. 加载请求先委派给父加载器,父加载器加载不了才由自己加载,防止核心类被篡改
解析
启动类加载器、平台类加载器(JDK 9 之前叫扩展类加载器)、应用类加载器逐级委派,保证 java.lang 等核心类只由启动类加载器加载。JVM 判断两个类是否相同,要看全限定名和加载它的类加载器,不同加载器加载的同名类是不同类型。Tomcat、SPI 等场景会有意打破双亲委派。