我只是在TimeUnit enum源代碼看看(簡體herebelow):經典方法拋出AbstractMethodError VS抽象方法
public enum TimeUnit {
SECONDS {
public long toMillis(long d) { return d * 1000L; }
},
MINUTES {
public long toMillis(long d) { return d * 60000L; }
};
public long toMillis(long duration) {
throw new AbstractMethodError();
}
}
他們可能還使用抽象方法來實現它:
public enum TimeUnit {
SECONDS {...}, MINUTES {...};
public abstract long toMillis(long duration);
}
既然他們選擇了第一個實現,我想這肯定是有原因的。因此,我的問題是:爲什麼? AbstractMethodError
可以拋出嗎?如果是,在哪種情況下?
你說得對''MINUTES'' toMillis'實現,我剛剛編輯。 – sp00m