Java 不可变类

  • 什么是不可变类
  1. 当你获得这个类的引用时,不能改变这个类的内容;
  2. 不可变类的实例一旦创建,其成员变量就不能够被修改;

  

  • 如何创建不可变类
  1. 成员变量均为private权限
  2. 不提供改变成员变量的对外接口,即set方法
  3. 所有方法均不可被重载,有两种实现方式:1) 所有方法均加上final关键字(弱不可变类) 2)使用 final class(强不可变类)
  4. 如果类的成员变量为可变子类,那么在初始化过程中,需要对这个可变子类,进行深度拷贝;

  范例:

 1 public class ImmuteDemo {
 2     private String name;  //String 为不可变类
 3     private Date date;    //Date 为可变类
 4 
 5     public ImmuteDemo(String name,Date date){
 6         this.name = name;
 7         this.date = new Date(date.getTime()); //对输入对象,进行拷贝
 8    //  date.setTime(2101);  改变输入对象,并不影响成员date的值
 9     }
10 
11     public String getName(){
12         return name;
13     }
14 
15     public Date getDate(){
16         return new Date(date.getTime());
17     }
18 
19     public static void main(String[] args) {
20         Date date = new Date();
21         ImmuteDemo immuteDemo = new ImmuteDemo("zhang san",date);
22     }
23 }
24   

 

原文地址:https://www.cnblogs.com/liuyunAlex/p/5189151.html