不可变(imm utable)类与可变类

所谓不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值。在 JDK 的基本类库中, 所有基本类型的包装类, 如 Integer 和 Long 类, 都是不可变类, java.lang.String也是不可变类。

与不可变类对应的是可变类, 可变类的实例的属性是允许修改的.

不可变类的实例在整个生命周期中永远保持初始化的状态, 它没有任何状态变化,简化了与其他对象之间的关系。不可变类具有以下优点:

l  不可变类能使程序更加安全,不容易出错。

l  不可变类是线程安全的, 当多个线程访问不可变类的同一个实例时, 无需进行线程的同步。

public final class Schedule { 
private final Date start; 
private final Date end; 
public Schedule(Date start,Date end){ 
//不允许放假日期在开学日期的前面
if(start.compareT o(end)>0)throw new I llegalArgumentException(start +" after " +end); 
this.start=new Date(start.getTime());  //采用保护性拷贝
this.end=new Date(end.getTime());  //采用保护性拷贝
} 
public Date getStart(){return (Date)start.clone();}  //采用保护性拷贝
public Date getEnd(){return (Date)end.clone();}  //采用保护性拷贝
}



你可能感兴趣的:(不可变(imm utable)类与可变类)