Type the abstract Event base: stored delay, computed eventTime, abstract action
Type the abstract Event base: stored delay, computed eventTime, abstract action
Answer
public abstract class Event { private long eventTime; protected final long delayTime; public Event(long delayTime) { this.delayTime = delayTime; start(); } public void start() { eventTime = System.currentTimeMillis() + delayTime; } public boolean ready() { return System.currentTimeMillis() >= eventTime; } public abstract void action(); }
action() is abstract, so Event cannot be instantiated — every concrete event MUST override it. The ctor turns a relative delay into an absolute eventTime via start().