如何用Lombok日期和收藏定义不可变?

时间:2019-02-08 15:20:26

标签: java immutability lombok

我对lombok感到困惑,那些了解此工具的人都知道声明getter和setter非常容易,但是当涉及到Dates和Collections时,如何声明它们是不可变的?

致谢!

1 个答案:

答案 0 :(得分:0)

Lombok提供了@Wither,可通过某种方式简化不可变对象的创建。但是,它不涵盖您提到的情况。

您将不得不自己管理对象的不变性,并在所有其他情况下使用Lombok。

这也是一个示例,如何使用ImmutableObjectDate实现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
    }
}