`

Java中变化无常的常量

    博客分类:
  • java
阅读更多
Java中变化无常的常量

问题:
第一版:
     直接编译UserConstantsTest,编译过程中会检测到UserConstants尚未编译,然后会编译UserConstants

public class UserConstants {    
     public static final String USER_NAME = "admin";
     public static final String PASSWORD = "123456";
     public static final String DESCRIPTION = null;
}


public class UserConstantsTest {
     public static void main(String[] args) {
          System.out.println("User Name: " + UserConstants.USER_NAME);
          System.out.println("Password: " + UserConstants.PASSWORD);
          System.out.println("Description: " + UserConstants.DESCRIPTION);
     }
}


运行结果如图所示:




第二版:
     只修改UserConstants,并且只重新编译UserConstants,得到结果如下图所示:

public class UserConstants {     
     public static final String USER_NAME = "root";
     public static final String PASSWORD = "123456789";
     public static final String DESCRIPTION = "This is root account";
}


运行结果如图所示:



原因:
   
引用
First, true constant variables are inlined.
     Second, null is not a constant variable and thus is not inlined and so the actual constant on the classpath is used in that case.


     Java编译器会讲常数值编译到UserConstantsTest 的指令码或者常量池中,当UserConstantsTest使用这些常量时直接使用保存在类文件中的副本,但是null不是常量值,不受此限。
   
解决:
     第一种:使用get方法来获取常量值
    
 public static final String USER_NAME = "admin";
     public static String getUserName () {
          return USER_NAME;
     } 


     第二种:使用ident方法来获取常量值
   
 private static String ident(final String constant) {
           return constant;
     }

     public static final String USER_NAME = ident("root");
     public static final String PASSWORD = ident("123456789");
     public static final String DESCRIPTION = ident("This is root account");

         
参考:
     Inconstant Constants in Java:http://www.javaworld.com/community/node/3400






  • 大小: 5.8 KB
  • 大小: 5 KB
0
4
分享到:
评论

相关推荐

    感受一下Java中的“枚举类型”

    ”,有这个疑问说明你已经摸索到了枚举类型的主要功能:以统一命名的常量来替换变化无常的直接量,这是毫无疑问是枚举的主要作用,在大多数情况下,用static final是足够的,所以N多知名的源码里我们会经常看到用...

    电路出现了电感啸叫,原因都在这里

    其韵律或深沉或刺耳,或变化无常者皆有。  1、变压器(Transformer)浸漆不良:包括未含浸凡立水(Varnish)。啸叫并引起波形有尖刺,但一般带载能力正常,特别说明:输出功率越大者啸叫越甚之,小功率者则表现不一定...

    云计算时代的企业:在线企业

    在线企业是云计算时代企业的显著标识,更是企业未来办公模式的发展方向。...在线企业对外部环境的反应速度比传统的企业要更为快捷,使之能够在竞争激烈、变化无常的市场环境中生存并保持持续的竞争力。

    JavaSE技术入门

    1、Java程序结构 2、编译和运行Java程序 3、JRE安装配置 4、第一个Java应用程序

    电源技术中的开关电源的啸叫原因分析

    其韵律或深沉或刺耳,或变化无常者皆有。  1、变压器(Transformer)浸漆不良:包括未含浸凡立水(Varnish)。啸叫并引起波形有尖刺,但一般带载能力正常,特别说明:输出功率越大者啸叫越甚之,小功率者则表现不一定...

    电源技术中的关于开关电源的啸叫原因的经验

    其韵律或深沉或刺耳,或变化无常者皆有. 1. 变压器(Transformer)浸漆不良:包括未含浸凡立水(Varnish).啸叫并引起波形有尖刺,但一般带载能力正常,特别说明:输出功率越大者啸叫越甚之,小功率者则表现不一定明显.本人曾...

    DSP中的基于DSP平台的图形显示的研究与应用

    摘要:为了探索虚拟平台技术在引导设备中... 船载飞机飞行于气象变化无常的海洋,起降于面积狭小、摇摆不稳的飞行甲板,危及飞行安全的因素很多。据美国安全中心统计,船载直升机驾驶员的飞行事故是轰炸机驾驶员的10倍

    服务器维护的九大必备武器

    服务器毕竟是暴露在公网中,难免会有入侵者的光顾,然后入侵者总是"来也匆匆去也匆匆",从来不会告诉你什么时候他来过,走的时候留下过什么脚印,这给我们服务器管理加了一大难题,如何在变化无常的数据中找出...

    电源技术中的开关电源“有噪音”可以这样解决

    其韵律或深沉或刺耳,或变化无常者皆有。 音频噪声一般指开关电源自身在工作的过程中产生的,能被人耳听到频率为20-20kHz的音频信号。电子和磁性元件的振荡频率在人耳听觉范围内时,会产生能听见的信号。这种...

    开关电源啸叫原因经验总结

    测试开关电源或在实验中有听到类似产品打高压不良的漏电声响或高压拉弧的声音不请自来:其声响或大或小, 或时有时无;其韵律或深沉或刺耳,或变化无常者皆有。

    造成开关电源啸叫的因素分析

    凡是做过开发工作的人员都有这样的经历,测试开关电源或在实验中有听到类似产品打高压不良的漏电声响或高压拉弧的声音不请自来:其声响或大或小,或时有时无;其韵律或深沉或刺耳,或变化无常者皆有。

    Forrest_Gump

    只是一部很不错的书,让我们感受到人生的变化无常。我们从中又能学到生命的真谛。

    RFID技术在大闸蟹养殖中的应用

    从生产者角度来看,生产养殖技术的落后、养殖知识的匮乏、部分塘口基础设施较差以及自然生产环境的变化无常,都给生产者带来了难以估量的损失。从消费者来看,市场上大闸蟹品牌的鱼龙混杂,真假难辨,让消费者不知...

    CASS数据属性转入ArcGis终极战略(AutoCAD插件实现)

    在AutoCAD或者CASS数据向ArcGis数据转换过程中,您是否还在为自己录入的属性无法转出而烦恼?是否仍因转出的字段名称、类型、长度、缺省值不符合要求而苦闷?是否还在因规范对要素属性结构的定义变化无常而纠结? ...

    开关电源的啸叫原因的一点经验

    凡是做过开发工作的人员都有这样的经历,测试开关电源或在实验中有听到类似产品打高压不良的漏电声响或高压拉弧的声音不请自来:其声响或大或小, 或时有时无;其韵律或深沉或刺耳,或变化无常者皆有。文章就为大家...

    电路为什么会出现电感啸?该如何解决?

    其韵律或深沉或刺耳,或变化无常者皆有。1、变压器(Transformer)浸漆不良:包括未含浸凡立水(Varnish)。啸叫并引起波形有尖刺,但一般带载能力正常,特别说明:输出功率越大者啸叫越甚之,小功率者则表现不一定明显。...

    bookmarkdown:一个实验性的图书创作平台

    它有效,但可能变化无常,并且有一些粗糙的边缘。 也就是说,它有效,并且正在不断改进。 目前只有一个主题,它只创建 HTML 输出(PDF 和电子书支持正在开发中)。 可帮助您入门。 入门 安装 如果您已经安装了...

    MSC.adams软件在汽车空调压缩机中的应用

    由于汽车是直接暴露在太阳或风雪下,而且汽车行驶的速度变化无常,车内的空间有限。这都加大了汽车空调的设计难度。一般来说汽车空调由压缩机,冷凝器,蒸发器,和膨胀阀组成。汽车空调压缩机是汽车空调的关键零部件...

Global site tag (gtag.js) - Google Analytics