`

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中的“枚举类型

    ### Java中的“枚举类型”知识点详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法...

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

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

    GOF设计模式详解

    Java中的接口和抽象类是实现灵活性和扩展性的重要手段,设计模式则通过实例展示它们的广泛应用,帮助开发者深化对这些概念的理解。 设计模式追求可重用性,挑战软件开发中变化无常的需求,试图找出不变的部分并将其...

    JavaSE技术入门

    编译和运行Java程序:在Java中,程序先被编译器编译成字节码,然后由Java虚拟机(JVM)解释执行。编译是通过javac命令完成的,而运行则是通过java命令来执行编译好的字节码文件。 JRE安装配置:Java运行环境(JRE)...

    CSP备考不完全指南,备考经验分享

    CSP的难度变化无常,有时会出现难一次、易一次的趋势。例如,作者提到的第21次考试就显著地提升了难度,不仅第二题开始考察算法,而且后续题目也相当具有挑战性,导致平均分大幅下降。相反,第22次考试则相对简单。...

    小中取大法_小中取大法_

    在营销决策中,这种策略尤其重要,因为市场变化无常,消费者行为难以预测,不确定因素众多。 小中取大法的基本思想是,决策者在每个可能的选择中,不是去寻找最好的结果,而是考虑最坏的结果,并选择在最坏情况下...

    高中语文优美语段摘抄.doc

    3. 生活哲学的理解:生活中的无奈与矛盾,如白天与黑夜的对比,揭示了生活的复杂性和变化无常,鼓励人们以积极的态度面对生活的起伏。 4. 青春主题的探讨:通过描绘青春期的感受,展现了青少年追求自由、独立及自我...

    高中教育教学改革联盟学校_高二语文上学期期中联考试题.doc

    - 论证中引用了《易经》的观点,说明了变化中的悲欢离合是自然规律,否极泰来,乐极生悲。 - 对于有情世界,文章以宝玉的情感世界为例,展示了情支撑着世界的艺术美感。 - 最后,虚空世界被阐述为一种永恒的真理...

    2024年中国中地球轨道天线行业市场深度评估及投资盈利预测报告.pptx

    然而,技术更新快速,市场变化无常,投资者需要时刻关注技术趋势、市场动态和政策变化,以规避风险。同时,市场竞争激烈,投资者需选择有技术优势、品牌影响力和良好发展前景的企业进行投资。 总结来说,中国中地球...

    高中语文必修全部必背课文.doc

    诗中的“氓”指的就是那个变化无常的男子,诗通过女子的口吻揭示了爱情的两面性,强调了女性在爱情中的被动地位和牺牲精神。诗中的“士之耽兮,犹可说也。女之耽兮,不可说也。”是经典名句,揭示了古代社会中男女...

    江苏省大丰市八年级语文上册第1讲语言运用__在具体的语境中正确使用句子讲义苏教版

    【金题精讲】部分提供了三个填空题,分别测试学生对于句子变化无常、语境关联以及句式搭配的理解。题目旨在让学生在实际操作中掌握在具体语境中使用句子的技巧。 综上所述,本讲内容主要教授了如何在具体的语境中...

    中学生《孙子兵法》读后感800字.docx

    3. **灵活应变**:《孙子兵法》认为战争形势变化无常,因此要求指挥者灵活应对。同样,在学习中,学生需要根据自己的进步和外部环境的变化调整学习计划,善于创新和思考。 4. **道德与领导力**:孙子提到“道”,即...

    (中小学教育)一下10-春晓课件.ppt

    “夜来风雨声”提到了夜晚的风雨,这不仅是自然现象的描述,也是对春天变化无常的写照。春雨滋润大地,为万物生长提供了条件,而风雨声则为静谧的夜晚增添了动感。 最后,“花落知多少”一句,诗人以落花的数量来...

    安全技术-网络信息-随机路由在无线传感器网络中的研究与应用.pdf

    由于WSN节点经常面对变化无常的外部环境,随机路由能通过在多个节点间动态分配负载,增加网络的灵活性和鲁棒性。而且,随机路由还有助于减轻网络瓶颈,提高数据传输的可靠性。不过,随机路由也有可能导致数据传输的...

    初中语文经典美文天空无晴是无晴亦是无情

    这种变化无常的现象不仅在自然界中常见,在人类的情感世界里同样如此。作者提到,无论天气如何变换,最终都会归于平静,这也寓意着情感经历波折后,人们会寻求内心的宁静。 文章中的“下雨了可以撑伞,可是当爱情下...

    如何打造你的核心竞争力.zip

    5. 代码能力:精通至少一到两种编程语言,如Java、Python或C++,并熟练使用数据结构和算法,这是IT从业者的基本功。同时,了解版本控制工具如Git,以及开发框架如React或Angular,也是必不可少的。 6. 问题解决与...

    2020年高中语文第3课老人与海课时作业5含解析新人教版必修3

    从给定的文件内容来看,主要涉及的是对高中语文教材中《老人与海》这篇课文的理解与分析。本文将从标题、描述以及部分内容出发,详细阐述其中所包含的知识点。 ### 1. 《老人与海》的核心主题 《老人与海》是美国...

    成长是主动选择并负责:《摆渡人》中的隐喻给我们的启示

    荒原的天气变化无常,正如我们的情绪起伏,反映出我们对外界事物的不同解读。这种建构主义的理念提醒我们,世界的意义并非固定不变,而是由我们的主观视角塑造。因此,抱怨环境不如改变自我,积极的心态能够为我们...

Global site tag (gtag.js) - Google Analytics