java - 类加载样式的困惑

标签 java

正如我在一个线程中发现的那样 Java: Difference between Class.forName and ClassLoader.loadClass Class.forName() 将始终使用调用者的 ClassLoader,而 ClassLoader.loadClass() 可以指定不同的 ClassLoader

System.out.println(Class.forName("test.Employee").getClassLoader());
System.out.println(ClassLoader.getSystemClassLoader().loadClass("test.Employee").getClassLoader());

但是上面两行打印的是相同的结果

sun.misc.Launcher$AppClassLoader@7ced01
sun.misc.Launcher$AppClassLoader@7ced01

请解释原因。

最佳答案

对您来说没有什么区别,因为您当前的类是使用 SystemClassLoader 加载的,而 SystemClassLoader 恰好是 sun.misc.Launcher$AppClassLoader@7ced01

如果您使用不同的类加载器来加载类,则两种方法在使用不同的类加载器加载的类中使用时都会使用不同的类加载器。

关于java - 类加载样式的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262067/

相关文章:

java - 为 HTML 电子邮件正文错误编码希伯来语文本

Java 舍入误差

java - URLClassLoader 未加载资源

java - Java 中使用泛型函数进行整数/int 自动装箱查询

Java Hibernate 级联问题

java - 在 libgdx 项目中使用钻石运算符

java - 无法使用 kafka 和 spring boot 反序列化数据

java - 如何检测数组(String[])中是否存在索引?

java - 使用 Google Play 服务的 AndEngine 广告

java - 使用 java 检查 Internet 连接,无需 URL 测试连接