为什么Java Optionals不可变?

Jul*_* A. 12 java optional

我想了解为什么Java 8 Optionals被设计为不可变的.它只是为了线程安全吗?

Sva*_*nte 18

可选项用于传递信息.如果你给别人一些东西,然后改变它的内容,他们会非常惊讶,而且不是很好.


mic*_*mon 6

可选被认为是一个值对象,并且应该是不可变的,以帮助降低他们在3点凌晨追踪错误的能力.您可以在此处阅读有关该主题的更多信息:

http://martinfowler.com/bliki/ValueObject.html

http://c2.com/cgi/wiki?ValueObjectsShouldBeImmutable