由於Andre提到,您可以繼承HashMap
或其他Map
實現。
下面是一個匿名類簡單的例子,自包含的main
方法:
public static void main(String[] args) {
Map<String, String> myMap = new HashMap<String, String>() {
private static final long serialVersionUID = 6585814488311720276L;
@Override
public String put(String key, String value) {
if (key != null && !key.equalsIgnoreCase("foo")) {
return super.put(key, value);
}
else {
throw new IllegalArgumentException("No foo's allowed!");
}
}
// TODO!
@Override
public void putAll(Map<? extends String, ? extends String> m) {
// TODO Auto-generated method stub
super.putAll(m);
}
};
System.out.println(myMap.put("blah", "blah"));
System.out.println(myMap.put("foo", "blah"));
}
輸出
null
Exception in thread "main" java.lang.IllegalArgumentException: No foo's allowed!
at test.Main$1.put(Main.java:18)
at test.Main$1.put(Main.java:1)
at test.Main.main(Main.java:29)
您可以擴展'HashMap'並重寫'put()'方法來輕鬆地實現這種機制。 –
有什麼理由不能只擁有2張地圖?一個可以修改,一個不可以? –
我可以。但是,每當Get被調用時,我都需要檢查兩個'Maps'。 –