更新常量类导致的编译问题
本文由发表于3年前 | J2EE | 暂无评论 |  被围观 1,290 views+
问题描述如下:对常量问题的思考:参考代码:
类从被加载到JVM内存开始,到卸载出内存,整个周期包括:加载、验证、准备、解析、初始化、使用和卸载。而虚拟机规范严格规定了有且只有五种情况必须对类进行初始化(link),这几种情况被称为对类的主动引用,其他的情况被称为被动引用(link),其中就包括调用一个类的常量,不会触发定义常量的类的初始化,这是因为常量(字符串类型或基本数据类型)在编译阶段会存入调用类的常量池中。
问题描述如下:

更新一个常量类class到服务器之后,其他引用这个常量的地方并没有做出改动,导致问题的出现。

对常量问题的思考:

一般在系统运行事情不会发生变化的东西才可以定义为常量,常量可以硬编码写到代码里面。

对于可能做出调整的常量需要考虑:为了方便编译,不用全局编译一次,哪里用到的常量就定义在哪个类中,或者使用枚举类型替换。

参考代码:

常量编译处理方式

可以发现,数组常量会从所在的类加载元素,而字符串和整型的常量会直接在常量池中保存一份数据,不会除非常量所在类的初始化。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/the-compilation-problems-caused-by-constant.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2014 12/8
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 禅茶 2014/3/23
2 CyclicBarrier的介绍和使用 2012/7/30
3 web网站项目编写页面时需要注意的事项 2011/5/15
4 Memcached配置使用与监控 2015/3/13
5 Java基础笔记 – 增强的for循环For each循环 自动装箱拆箱 可变参数 2011/10/30
6 JSF笔记 – JSF运行流程和生命周期介绍 2011/12/4
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.