我是靠谱客的博主 自然钢铁侠,这篇文章主要介绍java的collections_Collections.unmodifiableSet()在Java中做什么?,现在分享给大家,希望可以做个参考。

最终声明不能修改的对象引用,例如

private final Foo something = new Foo();

创建一个新的Foo,并将引用放在某物中。此后,不可能改变一些东西来指向一个不同的Foo实例。

这不妨碍修改对象的内部状态。我仍然可以在有关范围内访问Foo的任何方法。如果这些方法中的一个或多个修改该对象的内部状态,则final将不会阻止该对象的内部状态。

因此,以下内容:

private final Set fixed = new HashSet();

不会创建不能添加或以其他方式更改的集合;这只是意味着固定的只会引用该实例。

相反,做:

private Set fixed = Collections.unmodifiableSet( new HashSet() );

创建一个Set的实例,如果尝试调用fixed.add()或fixed.remove(),则该对象将抛出UnsupportedOperationException – 对象本身将保护其内部状态并阻止其被修改。

为了完整起见:

private final Set fixed = Collections.unmodifiableSet( new HashSet() );

创建一个Set的实例,它不允许其内部状态被改变,也意味着固定的只会指向该集合的一个实例。

final可以用于创建原语的常量的原因是基于不能更改该值的事实。请记住,以上修复只是一个引用 – 一个包含不能更改的地址的变量。那么,对于原语,例如

private final int ANSWER = 42;

ANSWER的值是42.由于ANSWER无法更改,所以它的值只有42。

一个模糊所有行的例子就是这样:

private final String QUESTION = "The ultimate question";

根据上述规则,QUESTION包含代表“最终问题”的String实例的地址,该地址不能更改。这里要记住的是,String本身是不可变的 – 你不能对改变它的String实例做任何事情,否则这样做的任何操作(如替换,子字符串等)将引用完全不同String的实例。

最后

以上就是自然钢铁侠最近收集整理的关于java的collections_Collections.unmodifiableSet()在Java中做什么?的全部内容,更多相关java内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部