我想了解为什么Java 8 Optionals被设计成不可变的。它只是为了线程安全吗?
可选选项用于传递内容。如果你把东西给某人,然后改变它的内容,他们会非常惊讶,而且不是以一种好的方式。
Optional 被认为是一个值对象,它应该是不可变的,以帮助降低它们让你在凌晨 3 点追踪 Bug 的能力。您可以在此处阅读有关该主题的更多信息:
http://martinfowler.com/bliki/ValueObject.html
http://c2.com/cgi/wiki?ValueObjectsShouldBeImmutable