java - 如何用 Lombok Date And Collections 定义不可变?
问题描述
我对 lombok 进退两难,知道这个工具的人都知道声明 getter 和 setter 很容易,但是当涉及到 Dates 和 Collections 时,我们如何才能声明它们不可变呢?
Thx 和亲切的问候!
解决方案
Lombok 提供了@Wither,它允许以某种方式简化不可变对象的创建。但是,它不包括您提到的情况。
您必须自己管理对象的不变性,并在所有其他情况下使用 Lombok。
此外,这是一个如何ImmutableObject
使用Date
and实现的示例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
}
}
推荐阅读
- amazon-eks - standard_init_linux.go:219:exec 用户进程导致:exec 格式错误 ECR + Quarkus
- bash - 在多个子目录下执行多个同名的shell脚本
- javascript - TypeError:event.preventDefault 不是函数
- sql - 我可以在 access.form 而不是每个 form.event 中 c.connect 一次吗?
- css - 在两列行css中对齐div
- javascript - 在 Vercel 上托管时 NuxtJS 生产中的 URIError
- google-chrome - 如何设置 Chrome 插件清单,以便内容脚本仅在某些子域上运行?
- javascript - 在 Cypress 中,如何从定义的数组列表中单击特定值?
- python-3.x - 我正在尝试通过串行通信读取传感器数据,但是当我尝试读取它时,它只是在 python 中运行,但它没有显示任何值
- php - 从 Firebase Admin SDK (PHP) 调用云函数