不可变类
来源:互联网 发布:java一行输出多个变量 编辑:程序博客网 时间:2024/05/23 07:22
(1)不可变类:创建了这个类的实例后,就不允许改变他的值,即一个对象一旦被创建,在整个生命周期中,他的成员变量就不能被修改。
在Java中包装类Integer、Long就是不可变类,String也是不可变类。设计简单、线程安全。
(2)不可变类遵守4条基本原则:
1)类中成员都用private修饰
2)没有修改成员的方法,如setXXX(),只提供构造器,一次生成不改变。
3)类中方法不会被重写,即final方法
4)如果一个成员不是不可变的(即非final的),那么在成员初始化和get等获取方法时需要通过clone()来保证类的不可变性。
//不可变类class A{private Date d;//非final成员public A(Date d){this.d=d;}public void print(){System.out.println(d);}}class B{private Date d;public B(Date d){this.d=(Date)d.clone();//借助clone解除了引用关系}public void print(){System.out.pritnln(d);}public Date getDate(){return (Date)d.clone();//借助clone解除了引用关系}}public class Main{public static void main(String[] args){Date d=new Date();A a=new A(d);a.print();//d.setMouth(5);a.print();//两次输出的结果是不同的 因为Date对象是可以被动改变的B b=new B(d);b.print(b);d.setMouth(4);b.pritn(b);//两次输出的结果是相同的}}
阅读全文
0 0
- 不可变类
- 不可变类
- 实现不可变类
- 不可变类
- Java 不可变类
- 不可变类
- Java不可变类
- 不可变类详解
- 不可变类
- java 不可变类
- 不可变类
- 不可变类
- 不可变类
- 不可变类
- Java-不可变类
- 不可变类
- 不可变类
- 不可变类
- 判断js中的数据类型的几种方法
- Android事件分发总结
- AE 模板 网址
- js双目运算符"&&"和"||"的运算方向
- 4移位运算符
- 不可变类
- Matlab JPEG详细介绍
- 前端开发人员需要具备的技能有哪些?
- 【动态生成表格】ajax成功返回后,使用js,取到数据动态生成表格2017
- js—手风琴效果
- MFC点击按钮打开文件选择对话框并获取图片
- ADOConnection
- day03-应用程序管理
- php实现定时任务的几种思路