java中不可变对象(immutable object)是什么,有什么意义
不可变对象顾名思义不可改变的对象
一旦构造器完成执行,该实例即无法改变
意味着可以传递对象的引用,不用担心改变其内容,特别是在处理并行时,不可变对象不存在锁的问题,易于构造使用
final class ImmutableClass {final String str;final int value;final int[] ints;public ImmutableClass(final String str, final int value) {this.str = str;this.value = value;}public String getStr() {return str;}public int getValue() {return value;}
}
1.使用final修饰类
保证类不可继承,保证其不变性
2.使用final修饰类属性
防止外部改变其属性,破坏不变性
3.类中包含类引用时,应使用深拷贝
public ImmutableClass(int[] ints) {this.ints = ints;
}
当直接通过构造器初始化类内部对象时,可通过外部对象的改变从而破坏类的内部状态,破坏其不变形
public ImmutableClass(int[] ints) {this.ints = ints.clone();
}
通过深度拷贝,保证状态的不变性
java中不可变对象(immutable object)是什么,有什么意义相关推荐
- java object大小_在Java中,确定对象object大小的最佳方法是什么? - Break易站
例如,假设我有一个应用程序,它可以读取包含一堆数据行的CSV文件.我根据数据类型向用户提供行数摘要,但是我想确保不读取太多数据行并导致OutOfMemoryErrors.每一行都会翻译成一个对象.有没 ...
- java 字符串是对象吗_解析Java中的String对象的数据类型
解析Java中的String对象的数据类型 2007-06-06 eNet&Ciweek 1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所 ...
- js解析java对象数组_js接收并转化Java中的数组对象的方法
在做项目时,要向ocx控件下发命令,就要在js中得到java中的对象,然后拼成一种格式,下发下去...当对象是一个时比较简单,但如果对象是一个数组时,就略显麻烦了. 开始我以为有简单的方式,可以直接进 ...
- (转)java中对集合对象list的几种循环访问总结
Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一些讲 ...
- Java中的dozer对象转换
Java中的dozer对象转换 1.dozer介绍 Dozer是Java Bean到Java Bean映射器,它以递归方式将数据从一个对象复制到另一个对象. dozer是用来对两个对象之间属性转换的工 ...
- java中如何获取对象的内存地址
java中如何查看对象地址:使用 System.identityHashCode("对象") 即可 eg: Integer i = new Integer(5);System.i ...
- java定义对象数组初始化_怎么定义对象数组 JAVA中怎么初始化对象数组?
java类怎样定义数组对象数组 在c++编程中,怎么定义对象数组的指针? JAVA中怎么初始化对象数组? java中怎么创建对象数组?比如我创建了一个学生类Sclass Student{ } 类中怎么 ...
- Java中的可变类型与不可变类型
一.可变对象与不可变对象 Java中某些对象是可变的(mutable),它们有改变内部值的方法.例如,一个StringBuilder对象有办法来改变字符串内部的字符,等等. StringBuilder ...
- java中系统撤销对象顺序实例,撤消/重做功能Java的对象序列化
游戏编程与"企业应用程序"编程和"webapp编程"没有多大关系. 所以这取决于你正在做什么样的游戏,但你的方法和gaven所以这些票价与游戏状态在" ...
最新文章
- SUCEFUL:将ATM变得“惟命是从”的新型恶意程序
- wsl for pycharm vscode
- 成功解决win10下dos中运行tensorboard --logdir=logs和调用events.out.tfevents一闪而过的问题
- 如何使用 Istio 进行多集群部署管理(一)
- 实战|记一次绕过宝塔防火墙的BC站渗透
- nacos 读取纯数字字符 出错 @value
- [渝粤教育] 天津城建大学 混凝土结构设计原理A 参考 资料
- Android 内容提供器---简介
- java正则表达式匹配`\`
- 计算机绘图自考知识点,全国自考机械制图一试题2004.04
- 警告 初始化默认驱动器时出错“找不到运行 Active Directory Web 服务的默认服务器。”...
- 计算大数阶乘--VB Script 版
- 前端花瓣飘落特效代码
- android 广告栏效果,叫教你打造一个滑动悬浮置顶的视觉效果,给你的广告栏增加一些特色...
- 数据分析·零散知识点
- mysql主从配置duxi_[从0到1搭建ABP微服务] - 搭建授权服务
- 【自动驾驶】鸽了很久的小物体目标检测代码【小物体目标检测】
- Vue响应式原理(defineProperty)
- ARKit之路-ARKit概述之二
- 被127次掌声打断的浙江大学教授郑强的经典语录.(大家都看
热门文章
- parellels desktop启动虚拟机报“操作失败”
- Excel表列名称(基本实现)
- ios5.1.1旧版软件下载_苹果iOS 14.1正式版推送 关闭旧版本降级通道
- 【知识兔】Excel中的F1~F12快捷键,你还不会?强大到爆~
- 学习笔记1--过滤器代理
- [爆笑]吃了伟哥的公鸡
- dva使用及项目搭建
- 树莓派3B+ 远程下载服务器(Aria2)
- 吃透JAVA的Stream流操作,多年实践总结
- EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解