Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止类在另一个类中声明的hashmap中插入数据?_Java_Hashmap - Fatal编程技术网

Java 如何防止类在另一个类中声明的hashmap中插入数据?

Java 如何防止类在另一个类中声明的hashmap中插入数据?,java,hashmap,Java,Hashmap,我在最近的一次采访中被问到这个问题,我仍在寻找答案 “如何防止类在另一个类中声明的hashmap中插入数据?” 为了进一步解释-问题是可见性应该在类之外,但是每次用户从类之外调用“hashmap.put”(“a”,“sss”);它应该抛出一个运行时异常。这是良好封装的一部分,保护类的内部工作不受他人影响 确保Map字段是私有的,并且每当您从对象返回贴图以便其他人可以看到它时,请确保将其包装在一个文件夹中 X类{ 私有映射映射=新的HashMap(); 公共地图getMap(){ 返回集合。不可修

我在最近的一次采访中被问到这个问题,我仍在寻找答案

“如何防止类在另一个类中声明的hashmap中插入数据?”


为了进一步解释-问题是可见性应该在类之外,但是每次用户从类之外调用“hashmap.put”(“a”,“sss”);它应该抛出一个运行时异常。

这是良好封装的一部分,保护类的内部工作不受他人影响

确保
Map
字段是私有的,并且每当您从对象返回贴图以便其他人可以看到它时,请确保将其包装在一个文件夹中

X类{
私有映射映射=新的HashMap();
公共地图getMap(){
返回集合。不可修改映射(map);
}
}

集合的Javadoc中的。不可修改的映射


publicstaticmap unmodifiableMap(Map)不要让那个类看到HashMap?你的意思是像
Collections一样。unmodifiableMap
会,或者我误解了吗?问题是,即使在类之外,可见性也应该存在,但每次用户调用“HashMap.put”(“a”,“sss”)时;来自课堂外-它应该引发运行时异常。你不应该在原始问题中写下它吗?是的,我应该写。谢谢。现在编辑问题。希望现在能更好地理解。但是如果我将地图设置为“私有”,这会不会使它在课堂外不可见?问题说地图应该可以访问“Shiwam,我在答案中添加了一个例子。
class X {

   private Map<String, String> map = new HashMap<>();

   public Map<String, String> getMap() {
      return Collections.unmodifiableMap(map);
   }
}