我想为我的代码库创建几个不可变对象。那么,怎样能够确切地传达给其他人这个类是不可变的呢?我应该将所有字段设为final,并在对象构建时进行初始化吗?(这似乎非常笨拙...)还是应该创建一些Immutable接口,让对象实现它?(由于Java没有此背后的标准接口,我认为他们有其他方法来处理它。)在处理这个问题时,有什么标准的方式吗?(如果只是在字段周围添加一堆注释表明它们在初始化后不应进行修改,那也可以。)
Foo foo = Foo.newBuilder()
.setName("asd")
.setPoints(10)
.setOtherThings("whatever")
.build();
编写一个单元测试,如果你的同事使类可变,则该测试将失败。
使用 Mutability Detector,您可以编写以下测试:
import static org.mutabilitydetector.unittesting.MutabilityAssert.assertImmutable;
@Test public void isImmutable() {
assertImmutable(MyImmutableThing.class)
}