美文网首页
Class 相关的一些理解

Class 相关的一些理解

作者: hunter886 | 来源:发表于2018-04-10 17:06 被阅读64次

加载一个 class 文件的分为 3 步

  • 装载:查找相应的class文件并装载二进制数据。
  • 连接:执行验证,准备,以及解析(可选)
    • 验证:确保被导入类型的正确性
    • 准备:为类变量分配内存,并将其初始化为默认值
    • 解析:把类型中的符号引用转化为直接引用
  • 初始化:激活类的静态变量、初始化 Java 代码、执行静态代码块

loadClass() 和 Class.forName() 的区别

  • loadClass(className): 它调用的方法是它的重载方法 ClassLoader.loadClass(String name,boolean resolve) ; 如果 resolve 为 false 则表示目标对象被装载后不进行链接,这就意味这不会去执行类的连接和初始化。缺省该参数时为 false。注意:resolve=true 时,则保证已经装载,而且已经连接了。resolve=false 时,则仅仅是去装载这个类,不关心是否连接了,所以此时可能被连接了,也可能没有被连接(假如之前这个类被同一个 classLoad 加载并初始化了,那么将返回之前初始化过的类);
  • Class.forName(className) : 它调用的是它的重载方法 Class.forName(String name,boolean initialize,ClassLoader loader); 如果 resolve 为 true, 则在加载类之后执行初始化操作。缺省该参数时为 ture。注意 resolve = false 时,则不会初始化,但是不关心是否被连接。(假如之前这个类被同一个 classLoad 加载并初始化了,那么将返回之前初始化过的类);

关键字 new 和 Class.newInstance()的区别

  • new : 强类型,相对高效,能调用任何public构造。
  • newInstance : 弱类型,低效,只能调用无参构造。但是更灵活

相关文章

  • Class 相关的一些理解

    加载一个 class 文件的分为 3 步 装载:查找相应的class文件并装载二进制数据。 连接:执行验证,准备,...

  • 类文件结构-笔记

    前言 介绍本章之前总结了下一些和.class文件相关的其他知识点。 class文件相关介绍 我们都知道,我们在本地...

  • class 相关

    class 基本用法[https://es6.ruanyifeng.com/#docs/class] static...

  • Java-反射

    Class类的使用 Class类比较特殊,也比较难理解一些,所有类都是它的实例对象。我们用代码来理解一下: 普通的...

  • class的理解

    网上已经有很多资料讲解这个问题了,就是instance的isa指向对应的class,class的isa指向对应的元...

  • C++面向对象多线程学习笔记_类层次和线程处理C++组件

    类层次(class hierarchy)是一些通过继承(inheritance)相关联的类的集合。它的一些常见类类...

  • Class的理解练习

  • js class理解

    类出现让js更好的面向对象开发能更加语义化的实现类的继承 实际上:底层依旧是通过原型和原型链实现继承 类的基本使用...

  • 一文带你完全理解Python中的metaclass

    Class也是Object 在理解metaclass之前,我们需要先理解Python中的class。从某种程度上来...

  • python metaclass 详细说明

    Class也是Object 在理解metaclass之前,我们需要先理解Python中的class。从某种程度上来...

网友评论

      本文标题:Class 相关的一些理解

      本文链接:https://www.haomeiwen.com/subject/daenhftx.html