gpt4 book ai didi

java - 我可以使用普通 JDK 框架强制集合中单个元素的不变性吗?

转载 作者:行者123 更新时间:2023-11-30 09:26:21 25 4
gpt4 key购买 nike

我知道有像 Collections#unmodifiableSet 这样的包装方法及其其他变体,如 Collections#unmodifiableMap , Collections#unmodifiableList等等,这使得集合不可变,前提是客户端只能通过这些方法返回的引用访问集合,而不是直接访问集合。但它会阻止集合中的单个对象不可变吗?我可以使用标准 JDK 类而不是像 Google Guava 这样的 API 来实现相同的目标吗?

最佳答案

不,您必须使自己的类成为不可变版本。

示例:

List< StringBuilder > l1 = new LinkedList< StringBuilder >();
l1.add( new StringBuilder()); // ok
List< StringBuilder > l2 = Collections.unmodiableList( l1 );
l2.get(0).append( "Hello" ); // ok, because StringBuilder, unlike String is mutable
l2.add( new StringBuilder()); // throws exception

关于java - 我可以使用普通 JDK 框架强制集合中单个元素的不变性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14960782/

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