JVM学习之部分源码分析

独自空忆成欢 提交于 2020-02-04 02:38:17

1.获取类加载器(ClassLoaer)的途径
ClassLoader loader = 对象.getClassLoader();获取当前类的ClassLoader
ClassLoader loader = Thread.currentThread().getContextClassLoader();获取当前线程上下文的ClassLoader
ClassLoader loader = ClassLoader.getSystemClassLoader();获取系统的ClassLoader
ClassLoader loader = DriverManager.getCallerClassLoader();获取调用者的ClassLoader

2.ClassLoader源码内容:

例题:

public class JVMTest1{

    public static void main(String args[]) throws Exception{
      String[] string = new String[2];
      System.out.println(string.getClass().getClassLoader());
      System.out.println("---------");

      JVMTest1[] test = new JVMTest1[2];
      System.out.println(test.getClass().getClassLoader());
      System.out.println("-------");

      int[] ints = new int[2];
      System.out.println(ints.getClass().getClassLoader());

    }
}

对于第一个输出的null来说,String数组的元素类型是String类型,所以应有根加载器加载,所以输出null。

对于第二行输出来说,JVMTest1数组的元素类型是JVMTest1,是我自己写的类,所以是系统类加载器加载。

对于第三行输出来说,int数组的元素类型是int,属于基本类型,所以没有加载器,所以输出null。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!