Quiero tener objetos inmutables de Java como esto (muy simplificada):clase mutable como hijo de una clase inmutable
class Immutable {
protected String name;
public Immutable(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
En algunos casos, el objeto no sólo debe ser legible, pero mutable, por lo que podría añadir mutabilidad través de la herencia:
public class Mutable extends Immutable {
public Mutable(String name) {
super(name);
}
public void setName(String name) {
super.name = name;
}
}
Si bien esto es técnicamente muy bien, me pregunto si se conforma con programación orientada a objetos y la herencia que mutable es también de tipo inmutable. Quiero evitar que el crimen de OOP arroje UnsupportedOperationException
por objeto inmutable, como hace la API de colecciones de Java.
¿Qué opinas? ¿Alguna otra idea?
Esto es exactamente lo que hace Objetivo C: '' NSMutableString' hereda de NSString', '' NSMutableArray' hereda de NSArray', etc. – Nefrubyr