美文网首页
类的初始化(5种主动使用引发)

类的初始化(5种主动使用引发)

作者: 树心图物 | 来源:发表于2019-04-22 22:22 被阅读0次

1、遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,类如果没初始化就会被初始化,创建对象,读取或设置静态字段,调用静态方法。有例外,访问即static又final的常量。
2、反射
3、子类初始化前会先初始化父类
4、包含main方法的类,虚拟机启动时会先初始化该类
5、使用jdk的动态语言支持时(不明)

接口有些不同(在5种中的其中子类引起父类初始化这一种上不同),不管是子接口还是实现了接口的类初始化都不会自动触发父接口或所实现接口的初始化,除非真正用到父接口时才初始化(比如访问到接口中的静态变量),在hotspot中调用类所实现的相应接口的方法都不会造成相应接口的初始化(待进一步确认,不过认为这是合理的,因为是否实现的接口的方法在编译时检查,实现类中肯定有相应的方法了,没必要初始化接口)。调用类中的static final常量时并不会触发该类的初始化,但是调用接口中的static final常量时便会触发该接口的初始化。

相关文章

  • 类初始化阶段示例

    Singleton.getInstance() 调用此静态方法,表示对这个类的主动使用, 在主动使用这个类的初始化...

  • 类的初始化(5种主动使用引发)

    1、遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,类如果没初始化...

  • 类的初始化与接口初始化

    通过几个简单示例来理解类的初始化 java程序对类的使用方式分为两种: 主动使用 被动使用 主动使用(七种): 创...

  • JVM(二)类的主动使用与被动使用

    对类的使用方式 主动使用 被动使用 所有Java虚拟机实现必须在每个类或接口被Java程序首次主动使用时才初始化 ...

  • JVM加载类的时机

    类的生命周期 加载,连接(验证,准备,解析),初始化,使用,卸载 对类的主动引用(5种),会触发类的初始化 Jav...

  • 类的加载机制

    类的生命周期:加载 、验证、准备、解析、初始化、使用、卸载 有且只有5中情况必须对立进行初始化(即主动引用):使用...

  • 初识反射

    Java类的加载,连接和初始化 当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化...

  • 5.类的加载连接与初始化过程详解

    类的加载、连接与初始化 Java程序对类的使用方式可分为两种主动使用被动使用 所有的Java虛拟机实现必须在每个类...

  • 2.类的加载连接与初始化过程详解

    类的加载、连接与初始化 Java程序对类的使用方式可分为两种主动使用被动使用 所有的Java虚拟机实现必须在每个类...

  • java反射之Class

    从上面我们可以看到,如果仅使用.class语法来获得对类的Class引用是不会引发初始化的。但是如果使用Class...

网友评论

      本文标题:类的初始化(5种主动使用引发)

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