Java 不可变对象
来源:互联网 发布:linux go 安装包下载 编辑:程序博客网 时间:2024/05/08 14:42
不可变对象:
1:一旦创建,对象的状态就不能被修改,任何的修改都会创建一个新的对象
2:类和类属性都应该是final类型
3:如果里面含有非immutable对象,那么客户端的调用都应该返回一个该对象的拷贝
不可变对象的好处:
1:线程安全
2:创建的对象可以做缓存处理,使用静态工厂方法valueOf()返回一个已经存在的对象
例一:
public final class ImmutableObject_1 {private final Date date;public ImmutableObject_1(Date date){this.date = new Date(date.getTime());}public Date getDate(){return (Date)date.clone(); //返回可变属性的拷贝}}
例二:
public class ImmutableObject_2 {private final Name name;public ImmutableObject_2(Name name){//this.name = name; 不能这样写this.name = new Name(name.getFirstName(), name.getLastName());}public Name getName(){return name.clone(); //返回可变属性的拷贝}public static void main(String[] args) {Name name = new Name("Jason", "Lin");ImmutableObject_2 immutable = new ImmutableObject_2(name);System.out.println(immutable.getName().getFirstName());immutable.getName().setFirstName("Harry");System.out.println(immutable.getName().getFirstName());}}class Name implements Cloneable{private String firstName;private String lastName;public Name(String firstName, String lastName){this.firstName = firstName;this.lastName = lastName;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public Name clone(){return new Name(this.firstName, this.lastName);}}
0 0
- Java 不可变对象
- java 不可变对象
- Java不可变对象
- Java不可变对象
- Java不可变对象
- java 不可变对象
- Java不可变对象
- java不可变对象
- Java不可变对象
- JAVA String 不可变对象
- JAVA 可变对象,不可变对象
- 并发---不可变对象(java tutorial翻译)
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象
- 为什么Java字符串是不可变对象?
- java中不可变对象(Immutable)
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- ArcGIS教程:关于创建TIN的基础知识
- 毕业后不知道去哪里
- 自制作的一个手机平衡球游戏!
- C# 读取DAE模型的主代码
- OpenSSL曝重大安全漏
- Java 不可变对象
- as3学习笔记3:Loader动态加载图片
- qemu and kprobes
- android开发--- jni读取assets资源文件
- 《爸爸去哪儿2》又掀热潮
- kill qt bugs
- 2014.5.12
- 二叉树--java实现
- ZEUSCLOUD&EXTREME战略合作签约仪式顺利举行