【发布时间】:2010-03-22 16:21:49
【问题描述】:
我想要这样的不可变 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;
}
}
虽然这在技术上没问题,但我想知道它是否符合 OOP 和 mutable 也是不可变类型的继承。我想避免像 Java 集合 API 那样为不可变对象抛出 UnsupportedOperationException 的 OOP 犯罪。
你怎么看?还有其他想法吗?
【问题讨论】:
-
这正是Objective C所做的:
NSMutableString继承自NSString,NSMutableArray继承自NSArray等等。
标签: java oop inheritance immutability mutable