Я хочу иметь неизменяемые объекты Java, подобные этим (сильно упрощенные):
class Immutable {
protected String name;
public Immutable(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
В некоторых случаях объект должен быть не только читаемым, но и изменяемым, поэтому я мог бы добавить изменчивость через наследование:
public class Mutable extends Immutable {
public Mutable(String name) {
super(name);
}
public void setName(String name) {
super.name = name;
}
}
Хотя это технически нормально, мне интересно, соответствует ли это ООП и наследованию, что изменяемый также имеет тип неизменяемого. Я хочу избежать преступления ООП, которое выдает UnsupportedOperationException
для неизменяемого объекта, как это делает API коллекций Java.
Что ты думаешь? Есть другие идеи?