gpt4 book ai didi

java - 如何声明该方法正在返回 Collections.unmodifiableMap

转载 作者:行者123 更新时间:2023-11-29 06:37:05 25 4
gpt4 key购买 nike

我从一个方法返回一个不可修改的映射。我如何确保任何试图修改返回映射的代码都会出现编译时错误,而不是运行时错误?

我的类(class):

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

我可以更改返回类型吗?我可以添加适当的注释吗?

最佳答案

你可以创建一个类

class ReadOnlyMap<K, V> {

private final Map<K, V> map;

public ReadOnlyMap(Map<K, V> map) {
this.map = map;
}

public V get(Object key) {
return map.get(key);
}

// also implement size() method
// and everything else you want to expose
}

并将其用作方法的返回类型。那么你的方法就是

public ReadOnlyMap<String, Bar> getMap() {
return new ReadOnlyMap(aMap);
}

请注意,如果值对象不是不可变类的实例,这不会妨碍调用者改变值对象。

关于java - 如何声明该方法正在返回 Collections.unmodifiableMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19008993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com