定義:一個對象的狀態(對象的屬性,並不是對象在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; } }