0
点赞
收藏
分享

微信扫一扫

类加载和反射机制

眼君 2022-03-12 阅读 40

类加载与反射机制

类加载

类加载的顺序

  • step1: 加载: 加载class文件

    内存中创建一个特殊对象Class

    Car c = new Car();
    		
    System.out.println(c.getClass());
    System.out.println(Car.class);
    
    Class<?> clazz = Class.forName("com.dyit.classloader.Car");
    

    何时加载class文件:

    1. new Car();
    2. Class.forName(“包.类”);

    来加载Car.class: 类加载器

    1. Bootstrap 类加载器
    2. Extension 类加载器
    3. Application 类加载器

    app–>继承—>ext–>继承–>-bootstrap

    双亲委托机制:

    Car.class—>加载(App)–>Ext(检查)–>Bootstrap

  • /*
     * 类加载器之间关系 
     */
    System.out.println(clazz.getClassLoader());
    System.out.println(clazz.getClassLoader().getParent());
    System.out.println(clazz.getClassLoader().getParent().getParent());
    
    
  • step2:链接: class文件内容合法

  • 验证: 0xCAFEBABE

  • 准备: 类变量(static)分配内存空间-方法区,初始化

  • 解析

  • step3: 初始化,对类中的定义的属性进行初始化

  • step4: 使用

  • step5: 卸载

举报

相关推荐

0 条评论