このjava.util.Collectionsクラスを使用すると、コレクション インスタンスを変更不可にすることができます。以下の方法
protected Map<String, List<String>> getCacheData() {
return Collections.unmodifiableMap(tableColumnCache);
}
umodifiableMapを返すため、UnsupportedOperationExceptionはマップ インスタンスを変更しようとしたために発生します。
@Test(expected = UnsupportedOperationException.class)
public void checkGetCacheData_Unmodifiable() {
Map<String, List<String>> cacheData = cache.getCacheData();
cacheData.remove("SomeItem");
}
残念ながら、すべてのList<String>子が変更不可能というわけではありません。それで、子の値に対しても変更不可能な動作を強制する方法があるかどうか知りたいList<String>ですか?
もちろん、別の方法として、マップのキーと値のペアを反復処理し、リストを変更不可にして、マップを再構築することもできます。