具有公有地静态final数组域几乎总是错误的。比如:
public static final String[] CODES={ "A","B", "C", "D", "E};
初看这段代码有什么感想?因为CODES定义的是static final,"final"在java中定义为"不可变"(我想在其它语言中也是这样定义的),值得注意的是它只是说明指向该对象的指针不变,对于常量对象来说这点是成立的,但对于数组来说就不成立啦!因为上面只能保证CODES对象不变(意思是说final只能保证基本数据类型或原始数据类型不可变,比如:String,Double),但CODES引用的对象是可以改变的。
解决方案1:定义一个私有数组,以及编写一个公有的非可变列表:
private static final String[] CODES ={ "A","B", "C", "D", "E"};
public static final List VALUES= Collections.unmodifiableList(Arrays.asList(CODES));
解决方案2:要求在编译时(compile-time)类型检查,这样也就损失了性能
private static final String[] CODES = { "A","B", "C", "D", "E"};
public static final codes() {
return (CODES[])CODES.clone();
}
解决方案3:死马当做活马医
public static final String CODES_A = "A";
public static final String CODES_B = "B";
public static final String CODES_C = "C";
public static final String CODES_D = "D";
public static final String CODES_E = "E";
我每个解决方案用
框起怎么显示不错代码编辑器的效果???????
分享到:
- 2007-02-13 14:00
- 浏览 3752
- 评论(0)
- 论坛回复 / 浏览 (0 / 3444)
- 查看更多
相关推荐
1.static修饰一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为private私有,那么只能在类内部使用.
final的使用简单简绍,更容易的理解final关键字的使用
Final_Cut_Pro使用手册.pdf
目录数组的概念数组的创建数组的引用数组的创建数组元素的初始化数组的使用使用数组数组的复制多维数组 数组的概念 数组由同一类型的对象或者基本数据组成,并封装在同一一个标识符(数组名称)下。 数组是对象 动态...
主要介绍了Java基于final修饰数据过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
国内所有的城市名称,一个字符串数组例如 public static final String[] mCitiesStrings = { "A", "阿拉善盟", "鞍山", "安庆", "安阳", "阿坝", "安顺", "阿里", "安康", "阿克苏", "阿勒泰" ,"澳门" ,"安吉" ,...
final关键字的使用f
:money_bag: :chequered_flag: React最终形式的数组安装npm install --save react-final-form-arrays react-final-form final-form final-form-arrays 或者yarn add react-final-form-arrays react-final-form ...
Hibernate.jar包,Hibernate可以应用在任何使用JDBC的场合,包含 hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-...
赠送jar包:jboss-threads-3.1.0.Final.jar; 赠送原API文档:jboss-threads-3.1.0.Final-javadoc.jar; 赠送源代码:jboss-threads-3.1.0.Final-sources.jar; 赠送Maven依赖信息文件:jboss-threads-3.1.0.Final....
赠送jar包:jboss-logging-3.4.1.Final.jar; 赠送原API文档:jboss-logging-3.4.1.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.1.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.1.Final....
Final IK 2.2 - Unity
赠送jar包:validation-api-2.0.1.Final.jar; 赠送原API文档:validation-api-2.0.1.Final-javadoc.jar; 赠送源代码:validation-api-2.0.1.Final-sources.jar; 赠送Maven依赖信息文件:validation-api-2.0.1....
Java中final类的简单使用,并对Java关键字的使用做出了总结
Final Cut Studio 2.0 容量大小为50多G! Final Cut Studio 2让你超越纯粹的剪辑。你将发现特别为 Final Cut Pro 用户设计的新创意工具的强大力量。从剪辑快速过度到动画制作、音频编辑及混音、颜色分级以及作品交付...
赠送jar包:undertow-websockets-jsr-2.1.7.Final.jar; 赠送原API文档:undertow-websockets-jsr-2.1.7.Final-javadoc.jar; 赠送源代码:undertow-websockets-jsr-2.1.7.Final-sources.jar; 赠送Maven依赖信息...
赠送jar包:netty-3.10.5.Final.jar; 赠送原API文档:netty-3.10.5.Final-javadoc.jar; 赠送源代码:netty-3.10.5.Final-sources.jar; 赠送Maven依赖信息文件:netty-3.10.5.Final.pom; 包含翻译后的API文档:...
FinalData是一个免费的带有中文界面的数据恢复软件,主要用于恢复误删除的文件。FinalData软件体积小,可以快捷、有效地恢复误删除的文件,FinalData提供了绿色版和安装版,绿色版可以放在U盘上使用。
Java编程思想第四版140页是这么描述的,“对应基本类型,final使数值恒定不变,对应对象引用,final使引用恒定不变。 * 一旦引用被初始化指向一个对象,就无法再把他改为指向另一个对象。然而对象其自身却是可以被...
USB 3 0 Final USB 3 0 Final USB 3 0 Final