Lombok предоставляет @ Wither , что позволяет каким-то образом облегчить создание неизменных объектов.Однако это не распространяется на случаи, которые вы упомянули.
Вам придется самостоятельно управлять неизменяемостью объектов и использовать Ломбок для всех других ситуаций.
Кроме того, это пример того, как реализовать 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
}
}