设计模式
来源:互联网 发布:linux 调用远程脚本 编辑:程序博客网 时间:2024/06/10 04:33
不可变的对象有很多好处,像我们最熟悉的String对象就是一个不可变的对象,这篇文章主要讲解怎么创建我们自己的不可变对象。对于不可变对象的好处,这里不做详细解释。
Java要创建不可变的对象需要满足下面几个条件:
1. 这个类被声明成final,不可以被继承,也不可以重载它的方法
2. 这个类的成员变量都是final并且是私有的
3. 如果成员变量是一个引用类型,是可变的,那么在他的getter()方法中,返回的是对该对象的拷贝,这里作一个简单的解释,为什么成员变量是final的,引用对象还需要取的时候Copy了,因为final只能保证引用不变,但不能保证引用对象本身不变。
看下面的代码,一个简单的不可变类,创建的对象就是不可变对象,其中特别注意Date对象,是一个引用对象,如果GetBoB方法中不做copy,那么我们得到这个对象的引用后就可以改变这个Date的值了,虽然引用并没有改变。
public final class BrokenPerson{private final String firstName;private final String lastName;private final Date dob;public BrokenPerson( String firstName, String lastName, Date dob){this.firstName = firstName;this.lastName = lastName;this.dob = dob;}public String getFirstName(){return this.firstName;}public String getLastName(){return this.lastName;}public Date getDOB(){return new Date( this.dob.getTime() );}}
阅读全文
0 0
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式~~~~~~~~~~
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 《机器学习》学习笔记七 聚类
- Android线性曲线视图
- 文件管理类
- 《UI框架—基于Unity5.4UGUI(一)》
- 关于安装版JDK1.8 1.7更改多个JDK环境变量 不生效
- 设计模式
- 糊糊的前端学习笔记——文章分享【Day2】
- osx中的环境变量设置
- JAVA集合类汇总
- 解决 anaconda3 安装 xgboost :/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found问题
- web前端练习笔记
- 《机器学习》学习笔记八 概率图模型
- SSH项目中出现SQL Error: 1452, SQLState: 23000
- 最长公共子序列分析