Java 不可变类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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   

 

 

以上是关于Java 不可变类的主要内容,如果未能解决你的问题,请参考以下文章

java中一个类是不可变类的条件是啥?求详细解答。

在Java中String类为什么要设计成final?String真的不可变吗?其他基本类型的包装类也是不可变的吗?

所有原始包装类都是不可变对象吗?

Java 不可变类

Java String类为什么不可变?

Java中String为什么是不可变的