我正在从一个方法返回一个不可修改的地图。如何确保任何试图修改返回映射的代码都会出现编译时错误,而不是运行时错误?
我的课:
public class Foo
{
private final Map<String, Bar> aMap;
public Foo()
{
...
}
public Map<String, Bar> getMap(){
return Collections.unmodifiableMap(aMap);
}
}
我希望这会产生编译时错误:
Foo foo = new Foo();
Map<String, Bar> m = foo.getMap();
m.put('key',null); // user should be notified that the map is unmodifiable here, not at run time
我可以更改退货类型吗?我可以添加适当的注释吗?