您的位置:首页 > 编程语言 > Java开发

eff java 15条

2015-11-08 17:26 218 查看
不可变类最小化

现状:没注意过,对不变类理解不深

原因:不知道为什么要把一个类定义为不可变的

不可变类,好处:

1.线程安全,类的所有属性都可以在多个线程共享,不用同步

2.可以缓存不可变类

3.加快jvm速度

String就是一个典型的不可变类。

设计不可变类的原则:

1.设计为final,个人理解final和不可变类没有必然的联系,这里申明为final,主要是怕在继承的时候破话语义,比如StringChild继承String,StringChild完全可以设计为可变的,下次String str = new StringChild("abc"),还认为str指向的string是不可变的,不就产生歧义了么。

2.私有变量,final。对于final int a,其实可以设计为public,但是若以后要a的类型,改为引用一个对象,那么就只能private了,因为对象内的属性是有可能修改的,所以都申明为private.

3.深度复制,不管创建对象还是输出对象属性

4.不提该修改属性的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: