TimeUnit 列挙型のソース コード (以下に簡略化)を確認しました。
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
投げられることはありますか?はいの場合、どのような場合ですか?