Java的Collections.unmodifiableList和Collections.unmodifiableMap在Ruby标准API中是否有等价物? 最佳答案 使用freeze应用程序接口(interface):Preventsfurthermodificationstoobj.ARuntimeErrorwillberaisedifmodificationisattempted.Thereisnowaytounfreezeafrozenobject.SeealsoObject#frozen?.Thismethodretur
我在使用来自json的Jackson序列化时遇到问题,如何从Collections.unmodifiableMap序列化?我得到的错误是:com.fasterxml.jackson.databind.JsonMappingException:Cannotconstructinstanceofjava.util.Collections$UnmodifiableMap,problem:Nodefaultconstructorfound我想使用http://wiki.fasterxml.com/SimpleAbstractTypeResolver中的SimpleAbstractTypeRes
我有一个字符串列表(tagList)需要在多个线程之间共享以供读取,所以我创建了一个不可修改的版本并将其传递给线程,我不确定它是否线程安全,因为线程只读取该列表所以我想应该没问题吧?另外,当我将那个不可修改的列表传递给线程时,它是传递一个副本并由线程共享,还是创建多个副本并将一个副本传递给每个线程?这是我的代码:finalListtList=Collections.unmodifiableList(tagList);List>calls=newArrayList>();FileStatus[]fsta=_fileSystem.listStatus(p);for(FileStatusst
在我编写的项目中,我需要从函数返回一个线程安全且不可变的View。但是,我不确定这一点。由于synchronizedList和unmodifiableList只是返回列表的View,我不知道是否Collections.synchronizedList(Collections.unmodifiableList(this.data));会成功的。谁能告诉我这是否正确,如果不正确,是否存在任何可能失败的情况?感谢您的任何意见! 最佳答案 我发现这是JDK中的真正差距。幸运的是,一个由JavaCollections设计师领导的Google团
这个问题在这里已经有了答案:WhyisaConcurrentModificationExceptionthrownandhowtodebugit(8个答案)关闭3年前。我在下面有这段代码,我通过执行以下行得到了一个ConcurrentModificationException:filterCardsToDevice(getCollection());代码:privateListfilterCardsToDevice(Collectioncol){finalListnewList=newArrayList();for(MyClassmyObj:col){longid=myObj.getI
Collections.unmodifiableList(...)返回静态内部类UnmodifiableList的新实例。其他不可修改的集合类的构造方式相同。如果这些类是公开的,其中一个有两个优点:能够指示更具体的返回值(例如UnmodifiableList),因此API用户不会想到修改该集合;能够在运行时检查List是否为instanceofUnmodifiableList。那么,公开这些类(class)是否有任何不优势?编辑:没有提出绝对令人信服的论据,所以我选择了最受好评的答案。 最佳答案 我个人完全同意你的看法。问题的核心在
Collections.unmodifiableList(...)返回静态内部类UnmodifiableList的新实例。其他不可修改的集合类的构造方式相同。如果这些类是公开的,其中一个有两个优点:能够指示更具体的返回值(例如UnmodifiableList),因此API用户不会想到修改该集合;能够在运行时检查List是否为instanceofUnmodifiableList。那么,公开这些类(class)是否有任何不优势?编辑:没有提出绝对令人信服的论据,所以我选择了最受好评的答案。 最佳答案 我个人完全同意你的看法。问题的核心在
我可以看到Collections.unmodifiableSet返回给定集合的不可修改View,但我不明白为什么我们不能只使用final修饰符来完成此操作。在我的理解中,final声明了一个常量:不能修改的东西。所以,如果一个集合被声明为一个常量,那么它就不能被修改:不能从集合中删除任何东西,也不能添加任何东西。为什么我们需要Collections.unmodifiableSet? 最佳答案 final声明了一个不能修改的对象引用,例如privatefinalFoosomething=newFoo();创建一个新的Foo并将引用放在
我可以看到Collections.unmodifiableSet返回给定集合的不可修改View,但我不明白为什么我们不能只使用final修饰符来完成此操作。在我的理解中,final声明了一个常量:不能修改的东西。所以,如果一个集合被声明为一个常量,那么它就不能被修改:不能从集合中删除任何东西,也不能添加任何东西。为什么我们需要Collections.unmodifiableSet? 最佳答案 final声明了一个不能修改的对象引用,例如privatefinalFoosomething=newFoo();创建一个新的Foo并将引用放在
我有一个常量映射,如下所示:privatestaticMap_typesMap=newHashMap(){{put("string",'S');put("normalizedString",'N');put("token",'T');//(...)}我真的需要使用Collections.unmodifiableMap()来创建这个map吗?使用它有什么好处?不使用它有什么缺点,除了它们并没有真正变得恒定之外? 最佳答案 Collections.unmodifiableMap保证map不会被修改。如果您想从方法调用返回内部映射的只读V