最近,我偶然发现了不可变对象的实用性,例如,如果将元素传递给构造函数并且类应该是不可变的,那么如果它们本身不是不可变的,则必须复制这些元素。
这需要对我的项目进行大量检查或了解,因为如果我有
public A(B foo)
而且B
不是一成不变的,A
我必须复制B
。现在想象一下B
似乎是不变的,但是它本身在构造函数中具有可变的类,依此类推。
如果类在Java中是不可变的,是否有记录的标准或最佳实践?看来@immutable
Javadoc中没有关键字。
该@Immutable注解似乎有什么东西对汽车类生成完全不同的,而不是标准的Java的一部分。
2
首先,防御性复制使您可以解决此问题。其次,记录它的方法是该类Javadoc
—
raptortech97
“记录它的方法是Javadoc类”是否有标准方法可以做到这一点?那么这将是已经被接受的答案。
—
Aufziehvogel 2015年
@ raptortech97不变类的主要优点之一是不需要防御性复制。如果必须对所谓的不可变对象进行防御性复制,那么您做错了。
—
itsbruce 2015年
@itsbruce他正在谈论复制可变对象。另外,复制不变对象的原因之一是缓存位置。一些垃圾收集器会保留对象的相对顺序,因此分配在一起的对象会保持在一起。
—
2015年
你是对的。我的错。
—
itsbruce 2015年