Я хочу иметь неизменяемые объекты 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;
}
}
Хотя это технически хорошо, мне интересно, соответствует ли он ООП и наследованию, что mutable также является типом неизменяемым. Я хочу избежать преступления ООП, чтобы бросить UnsupportedOperationException
для неизменяемого объекта, как это делает API коллекций Java.
Как вы думаете? Любые другие идеи?