定义:一个对象的状态(对象的属性,并不是对象在JVM中的生命周期中的状态)在对象被建立以后就再也不变化。java
实现方式:缓存
用途:安全
package jv.maven_java.interview; import java.util.HashMap; import java.util.Map; import org.junit.Test; public class IVImmutable { @Test public void test() { Map<String , Object> m = new HashMap<String , Object>(); m.put("GG", "gg"); m.put("AA", "aa"); Immutable it = new Immutable(1001,"Immutable",m); Map tM= it.getMap(); /** * 由于两个Map填充的值是如出一辙的,全部HashCode计算出来同样,因此使用equals方法比较返回是true * 而两个是不一样的引用,因此使用==比较时返回false */ System.out.println(m.hashCode()); System.out.println(tM.hashCode()); System.out.println(tM == m); System.out.println(tM.equals(m)); } } /** * final修饰类,该类不能被继承 * @author Administrator * */ final class Immutable { private final int id; private final String name; private final HashMap<String,Object> map; public int getId() { return id; } public String getName() { return name; } /** * 可变对象的访问方法 */ public HashMap<String,Object> getMap() { return (HashMap<String,Object>) map.clone(); } /** * 实现深拷贝的构造器*/ public Immutable(int i, String n, Map<String,Object> hm){ this.id=i; this.name=n; HashMap<String,Object> tempMap=new HashMap<String,Object>(); tempMap.putAll(hm); this.map = tempMap; } }