美文网首页
类初始化过程中遇到的坑

类初始化过程中遇到的坑

作者: 奋斗_2339 | 来源:发表于2020-01-14 19:22 被阅读0次
public class Test {
  public static void main(String[] args) {
    System.out.println(AAA.str);
  }
}
public class AAA {
  static {
    System.out.println("AAA init");
  }
  public static /*final*/ int str =334;
}

工具:idea
1.编译Test、AAA后执行,输出AAA init 和334
2.放开AAA中的final修饰,main方法执行,竟然输出了AAA init和334
(PS:这种情况不是应该不触发AAA类的初始化吗?)
3.在2的前提下,修改str值为335,main方法执行,此时输出了335
4.在3的前提下,把str的值修改回334,main方法执行,此时输出了334
从代码来看第2步和第4步的代码一样的,为啥输出的结果不一致呢?

调查出来的原因是因为idea有自己的编译机制,如果单独只添加修饰符,idea不认为AAA中的str有变更,这样就导致Test类不重新编译,从而出现了步骤2这种情况,步骤4时,检测到了str值有变更过,从而Test进行编译,那打印出来的结果就是我们期待的结果了。

相关文章

  • 类初始化过程中遇到的坑

    工具:idea1.编译Test、AAA后执行,输出AAA init 和3342.放开AAA中的final修饰,ma...

  • IDEA 使用Lombok build项目报错 the meth

    使用Lombok过程中遇到的坑 以在Idea安装Lombok插件,在类上标注@Date、@@NoArgsConst...

  • Jvm学习笔记(三)

    类的初始化和加载 类初始化 遇到new,或读取、修改或调用一个类的static变量时。 反射调用。 初始化一个类时...

  • Visualizer 报错问题记录

    准备用这个类写个音乐可视化的小APP,使用的过程中遇到点问题这个Visualizer 初始化报错,Cannot ...

  • Java 静态属性与实例属性的初始化

    类的初始化包括静态属性的初始化和实例属性的初始化,在加载类过程中的准备阶段会给静态属性分配存储空间,并根据属性的类...

  • DataBinding 点击事件 Xml 中实现onClick

    在学习DataBinding的使用,在处理点击事件的过程中遇到了不少的坑,记录以下:有一个 ViewModel 类...

  • java 类初始化 顺序

    Java 类初始化介绍 java语言在使用过程中最先开始就是初始化,在工作中如果遇到什么问题需 要定位往往到最后也...

  • 对象的初始化过程

    一个对象在创建的过程中,通过调用该类的构造器实现初始化,如果该类有父类,则会先调用父类的构造器,初始化父类的类成员...

  • VUE初始化遇到的坑

    Vue.js是最近非常火爆的一个前端js框架,后面使用vue-cli建设自己的项目遇到了比较多的坑 开发项目的必要...

  • 动画集成中遇到的坑

    动画集成中遇到的坑 —— 动画过程中的点击问题(一)动画集成中遇到的坑 —— UIViewKeyframeAnim...

网友评论

      本文标题:类初始化过程中遇到的坑

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