public static final Map<String, String> mapObj = new HashMap<String, String>();
static {
mapObj.put("foo", "bar");
mapObj.put("hoge", "fuga");
}
こんな感じで書くこともあるかもしれないが、実はこれだとmapObjがfinalにならない。
(putとかでデータを追記したり、改変したりできる)
これでは意図しないデータの改変などが起こりうるので、変更を許さないようにするには下記のように書かないといけない。
private static final Map<String, String> mapObj;
static {
Map<String, String> tmpMap = new HashMap<String, String>();
tmpMap.put("foo", "var");
tmpMap.put("hoge", "fuga");
mapObj = Collections.unmodifiableMap(tmpMap);
}
Collections.unmodifiableMapに、改変を許可しないMapオブジェクトを渡すと、改変できないMapオブジェクトが得られる。
(正確には、改変しようとすると例外をスローするオブジェクトが得られる)
こうやって書いておくことで、処理の途中でMapが改変されるのを防止できる。
0 件のコメント:
コメントを投稿