列舉與抽象方法
列舉可以定義抽象方法,每個 enum
成員都需要實現這些方法。
enum Action {
DODGE {
public boolean execute(Player player) {
return player.isAttacking();
}
},
ATTACK {
public boolean execute(Player player) {
return player.hasWeapon();
}
},
JUMP {
public boolean execute(Player player) {
return player.getCoordinates().equals(new Coordinates(0, 0));
}
};
public abstract boolean execute(Player player);
}
這允許每個列舉成員為給定操作定義自己的行為,而不必在頂級定義中的方法中切換型別。
請注意,此模式是使用多型和/或實現介面通常實現的簡短形式。