我從方法返回一個不可修改的映射。我如何確保任何試圖修改返回映射的代碼都會得到編譯時錯誤,而不是運行時錯誤?如何聲明該方法正在返回Collections.unmodifiableMap
我的類:
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
我是否可以改變返回類型? 我可以添加適當的註釋嗎?
如果Method的返回類型是java.util.Map,則無法實現此功能。您只能將返回類型更改爲包裝「Map」的自定義類。 – jlordo
這很好,我怎麼改變返回類型? – Boundless
也許你不應該在這種情況下返回整個地圖 – doctorlove