16bit!

エンジニアじゃなくなっちゃった人が何かを書くブログ

【Java】MapやListの定数宣言

javaでMapやListを定数として宣言する時の方法。

Map
private static final Map<String, Integer> PRICE_MAP;
	static {
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("りんご", new Integer(80));
		map.put("ぶどう", new Integer(250));
		map.put("なし", new Integer(200));
		map.put("もも", new Integer(400));
		map.put("みかん", new Integer(70));
		PRICE_MAP = Collections.unmodifiableMap(map);
	}
List
private static final List<String> WORD_LIST;
	static {
		List<String> list = new ArrayList<String>();
		list.add("steal");
		list.add("stela");
		list.add("telas");
		list.add("teals");
		list.add("elast");
		list.add("least");
		list.add("laste");
		list.add("astel");
		WORD_LIST = Collections.unmodifiableList(list);
	}

どちらもstatic finalで宣言する。

ただし、MapやListなどのオブジェクト(参照型)に対してfinal修飾詞を付ける場合、
finalを付けてもその定数に対して別のオブジェクトの参照を代入することができなくなるだけで、
要素の追加や変更はできてしまうので、

Collections.unmodifiableMap(map);
Collections.unmodifiableList(list);

で要素の追加や変更も行えないようにしておくことが必要。


owari.