假设我们有一个给定的接口:
public interface StateKeeper {
public abstract void negateWithoutCheck();
public abstract void negateWithCheck();
}
和以下实现:
class StateKeeperForPrimitives implements StateKeeper {
private boolean b = true;
public void negateWithCheck() {
if (b == true) {
this.b = false;
}
}
public void negateWithoutCheck() {
this.b = false;
}
}
class StateKeeperForObjects implements StateKeeper {
private Boolean b = true;
@Override
public void negateWithCheck() {
if (b == true) {
this.b = false;
}
}
@Override
public void negateWithoutCheck() {
this.b = false;
}
}
此外,假设方法negate*Check()
可以被调用 1 次以上,很难说调用次数的上限是多少。
问题是根据执行速度、垃圾收集、内存分配等,两种实现中的哪种方法“更好” -
negateWithCheck
还是negateWithoutCheck
?答案是否取决于我们使用的两个提议的实现中的哪一个,或者无关紧要?
答案是否取决于估计的呼叫次数?使用一种或第一种方法更好地计数多少?