我对lombok感到困惑,那些了解此工具的人都知道声明getter和setter非常容易,但是当涉及到Dates和Collections时,如何声明它们是不可变的?
致谢!
答案 0 :(得分:0)
Lombok提供了@Wither,可通过某种方式简化不可变对象的创建。但是,它不涵盖您提到的情况。
您将不得不自己管理对象的不变性,并在所有其他情况下使用Lombok。
这也是一个示例,如何使用ImmutableObject
和Date
实现Collection
:
public final class ImmutableObject {
private final Collection<String> collection;
private final Date date;
public ImmutableObject(final Collection<String> options, final Date createdAt) {
this.collection = ImmutableList.copyOf(options); // guava's immutable list
this.date = new Date(date); // must be copied to prevent caller from modifying it
}
public Date getDate() {
return new Date(date); // Date is mutable
}
public Collection<String> getCollection() {
return collection; // already immutable copy
}
}