什么是不可修改对象(Immutable Object)?你能否写一个例子?
来源:互联网 发布:开淘宝微店能赚钱吗 编辑:程序博客网 时间:2024/06/06 03:35
不可修改对象是那些一旦被创建就不能修改的对象。对这种对象的任何改动的后果都是会创建一个新的对象,而不是在原对象本身做修改。例如Java中的String类就是不可修改的。大多数这样的类通常都是final类型的,因为这样可以避免自己被继承继而被覆盖方法,在覆盖的方法里,不可修改的特性就难以得到保证了。你通常也可以通过将类的成员设置成private但是非final的来获得同样的效果。
另外,你同样要保证你的类不要通过任何方法暴露成员,特别是那些可修改类型的成员。同样地,当你的方法接收客户类传入的可修改对象的话,你应该使用一个复制的对象来防止客户代码来修改这个刚传入的可修改类。比如,传入java.util.Date对象的话,你应该自己使用clone()方法来获得一个副本。
当你通过类函数返回一个可修改对象的时候,你也要采取类似的防护措施,返回一个类成功的副本,防止客户代码通过此引用修改了成员对象的属性。千万不要直接把你的可修改成员直接返回给客户代码。
1 0
- 什么是不可修改对象(Immutable Object)?你能否写一个例子?
- 什么是不可变对象(immutable object)?Java 中怎么创建一个不可变对象?
- immutable Object 不可变对象设计模式
- Immutable Objects 不可变对象
- 多线程设计模式——Immutable Object(不可变对象)
- java中不可变对象(Immutable)
- Java不可变对象(Immutable Objects)
- 可更改(mutable)与不可更改(immutable)对象
- Immutable Strings 字符串对象不可变
- 什么是不可变对象?
- The Java™ Tutorials — Concurrency :A Strategy for Defining Immutable Objects 一个定义不可变对象的策略
- 不可变对象(Immutable Objects)in Java
- 不可变(Immutable)字符串
- Immutable(不可变)集合
- 什么是对象切片(Object Slicing)?
- 什么是对象切片(Object Slicing)?
- 什么是伪装对象(mock object)
- 教你写socket(一个项目例子的socket部分)
- 转发和重定向的区别
- HTML5:定制表单
- [BZOJ2049]洞穴勘测[BZOJ2157]旅游Link-Cut Tree模板题
- Android Annotation基础教程
- mysql
- 什么是不可修改对象(Immutable Object)?你能否写一个例子?
- 架构师主要工作
- 【BZOJ3326】数数 数学题
- struts2的form提交时action属性的配置
- Dreamweaver 支持 scss 设置
- Android ListView GridView 错位
- 提示错误:arm-linux-gcc: Command not found
- 欢迎使用CSDN-markdown编辑器
- Rabbitmq 学习(1)python版