您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java 什么是不变的?

Java 什么是不变的?

不可变是指一旦对象的构造函数完成执行,该实例将无法更改。

这很有用,因为它意味着你可以传递对对象的引用,而不必担心别人会更改其内容。尤其是在处理并发时,永远不变的对象没有锁定问题

例如

class Foo
{
     private final String myvar;

     public Foo(final String initialValue)
     {
         this.myvar = initialValue;
     }

     public String getValue()
     {
         return this.myvar;
     }
}

Foo不必担心调用getValue()可能会更改字符串中的文本。

如果你想象与相似的类Foo,但是成员带有StringBuilder而不是String,则可以看到的调用getValue()将能够更改实例的StringBuilder属性Foo。

还要注意你可能会发现的各种不变性:埃里克·利珀特(Eric Lippert)撰写了一篇有关此的博客文章。基本上,你可以拥有其接口是不可变的对象,但是在幕后是实际的可变私有状态(因此不能在线程之间安全地共享)。

java 2022/1/1 18:20:33 有519人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶