#软件构造 Java中常见的mutable与immutable类
在软件构造的学习中,很多地方都会牵扯到有关mutable与immutable类的辨析,这里总结一下 Java中常见的mutable与immutable类
首先简要回顾一下immutable与mutable类的定义
- immutable类:immutable类是指这个类的实例一旦创建完成后,就不能改变其成员变量值,也就是不能改变对象的状态。首先,类需要声明为final,保证其不可以被继承,所有成员变量定义为private final,不提供改变成员变量的Mutators方法 ,通过构造器初始化成员变量,如果构造器传入了引用数据类型需要进行防御式拷贝。
图片来自https://www.cnblogs.com/pcideas/articles/5160689.html
- mutable类:定义比较简单,创建之后,该对象拥有可以更改其值/引用的方法
常见的immutable类
- String是immutable的,每次对于String对象的修改都将产生一个新的String对象,而原来的对象保持不变
- 基本类型及其封装对象类型都是不可变的,即byte、short、int、long、float、double、char、boolean与封装类:Boolean, Byte, Character, Short, Integer, Long, Float, Double
- 经过 Collections.unmodifiableList() 方法处理后的集合
- Scanner 常见的扫描器
- 将Iterator迭代器转换为Scala迭代器
常见的mutable类
-
StringBuilder StringBuilder类型是mutable的,创建成功后,可以利用一些方法来改变它指向地址中的的内容
-
常见的Map如HashMap
-
Java 中的常见的大多数迭代器Iterator
-
常见的Collection类,如Arraylist和linklist
(总结有什么错误欢迎支出)