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
分享到:
相关推荐
### Java中的“枚举类型”知识点详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法...
”,有这个疑问说明你已经摸索到了枚举类型的主要功能:以统一命名的常量来替换变化无常的直接量,这是毫无疑问是枚举的主要作用,在大多数情况下,用static final是足够的,所以N多知名的源码里我们会经常看到用...
Java中的接口和抽象类是实现灵活性和扩展性的重要手段,设计模式则通过实例展示它们的广泛应用,帮助开发者深化对这些概念的理解。 设计模式追求可重用性,挑战软件开发中变化无常的需求,试图找出不变的部分并将其...
编译和运行Java程序:在Java中,程序先被编译器编译成字节码,然后由Java虚拟机(JVM)解释执行。编译是通过javac命令完成的,而运行则是通过java命令来执行编译好的字节码文件。 JRE安装配置:Java运行环境(JRE)...
CSP的难度变化无常,有时会出现难一次、易一次的趋势。例如,作者提到的第21次考试就显著地提升了难度,不仅第二题开始考察算法,而且后续题目也相当具有挑战性,导致平均分大幅下降。相反,第22次考试则相对简单。...
在营销决策中,这种策略尤其重要,因为市场变化无常,消费者行为难以预测,不确定因素众多。 小中取大法的基本思想是,决策者在每个可能的选择中,不是去寻找最好的结果,而是考虑最坏的结果,并选择在最坏情况下...
3. 生活哲学的理解:生活中的无奈与矛盾,如白天与黑夜的对比,揭示了生活的复杂性和变化无常,鼓励人们以积极的态度面对生活的起伏。 4. 青春主题的探讨:通过描绘青春期的感受,展现了青少年追求自由、独立及自我...
- 论证中引用了《易经》的观点,说明了变化中的悲欢离合是自然规律,否极泰来,乐极生悲。 - 对于有情世界,文章以宝玉的情感世界为例,展示了情支撑着世界的艺术美感。 - 最后,虚空世界被阐述为一种永恒的真理...
然而,技术更新快速,市场变化无常,投资者需要时刻关注技术趋势、市场动态和政策变化,以规避风险。同时,市场竞争激烈,投资者需选择有技术优势、品牌影响力和良好发展前景的企业进行投资。 总结来说,中国中地球...
诗中的“氓”指的就是那个变化无常的男子,诗通过女子的口吻揭示了爱情的两面性,强调了女性在爱情中的被动地位和牺牲精神。诗中的“士之耽兮,犹可说也。女之耽兮,不可说也。”是经典名句,揭示了古代社会中男女...
【金题精讲】部分提供了三个填空题,分别测试学生对于句子变化无常、语境关联以及句式搭配的理解。题目旨在让学生在实际操作中掌握在具体语境中使用句子的技巧。 综上所述,本讲内容主要教授了如何在具体的语境中...
3. **灵活应变**:《孙子兵法》认为战争形势变化无常,因此要求指挥者灵活应对。同样,在学习中,学生需要根据自己的进步和外部环境的变化调整学习计划,善于创新和思考。 4. **道德与领导力**:孙子提到“道”,即...
“夜来风雨声”提到了夜晚的风雨,这不仅是自然现象的描述,也是对春天变化无常的写照。春雨滋润大地,为万物生长提供了条件,而风雨声则为静谧的夜晚增添了动感。 最后,“花落知多少”一句,诗人以落花的数量来...
由于WSN节点经常面对变化无常的外部环境,随机路由能通过在多个节点间动态分配负载,增加网络的灵活性和鲁棒性。而且,随机路由还有助于减轻网络瓶颈,提高数据传输的可靠性。不过,随机路由也有可能导致数据传输的...
这种变化无常的现象不仅在自然界中常见,在人类的情感世界里同样如此。作者提到,无论天气如何变换,最终都会归于平静,这也寓意着情感经历波折后,人们会寻求内心的宁静。 文章中的“下雨了可以撑伞,可是当爱情下...
5. 代码能力:精通至少一到两种编程语言,如Java、Python或C++,并熟练使用数据结构和算法,这是IT从业者的基本功。同时,了解版本控制工具如Git,以及开发框架如React或Angular,也是必不可少的。 6. 问题解决与...
从给定的文件内容来看,主要涉及的是对高中语文教材中《老人与海》这篇课文的理解与分析。本文将从标题、描述以及部分内容出发,详细阐述其中所包含的知识点。 ### 1. 《老人与海》的核心主题 《老人与海》是美国...
荒原的天气变化无常,正如我们的情绪起伏,反映出我们对外界事物的不同解读。这种建构主义的理念提醒我们,世界的意义并非固定不变,而是由我们的主观视角塑造。因此,抱怨环境不如改变自我,积极的心态能够为我们...