脚本宝典收集整理的这篇文章主要介绍了Effective Java之类和接口,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
成员变量不能是公然的,常量是例外。
@H_404_25@长度为非0的数组总是可变的,因此用public static final
修饰的数组容易带来潜伏的安全漏洞。
有两种解决方式,1是将数组变成私有,并添加1个公有的不可变列表
PRivate static final Thing[] PRIVATE_VALUES = {};
public static final List<Thing> VALUES=
Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));
private static final Thing[] PRIVATE_VALUES = {};
public static final Thing[] values() {
return PRIVATE_VALUES.clone();
}
使用setter和getter方法访问类成员变量,有以下好处
* 可以添加束缚条件
* 可以灵活的修改该类的内部表示方式
final
的@H_404_25@
不可变对象本质上是线程安全的,它们不要求同步。
@H_404_25@不要用为不可变对象提供clone
方法或拷贝构造器
不可变类的缺点是对不同的值都需要1个单独的对象。
@H_404_25@声明构造器为private
可以避免该类被继承。
final
域,当它们第1次被要求计算时,把1些开消昂贵的结果缓存到这些域中,以便下次再次要求一样的计算,就直接返回这些缓存的值。@H_404_25@
Serializable
接口,就必须显示的提供1个readObject
或readResolve
方法,或使用ObjectOutputStream.wrITeUnshared
和ObjectInputStream.readUnshared
方法。@H_404_25@
Cloneable
或Serializable
接口,不管clone
还是readObject
都不可以调用可覆盖的方法,不管是间接还是直接。@H_404_25@
Serializable
,并且该来有readResolve
或writeReplace
方法,就必须使其成为protected
,避免子类疏忽这两个方法。@H_404_25@
AbstractCollection
类@H_404_25@
Adapter
,它允许外部类的实例被看做另外一个不相干的类的实例。例如Map
接口中的集合视图。@H_404_25@
static
。@H_404_25@
以上是脚本宝典为你收集整理的Effective Java之类和接口全部内容,希望文章能够帮你解决Effective Java之类和接口所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。