перечисления, как правило, не могут заменить несколько полей.
Они используются, чтобы попытаться заставить аргумент метода (или аналогичного) принять только определенные предварительно определенные значения.
Подумайте об использовании enum, когда переменная может принимать одно из трех или около того разных значений.
Если это может быть только 2 разных значения, вы можете использовать логическое значение.Если вы думаете, что можете добавить третий вариант в будущем, возможно, используйте перечисление.
Классическими примерами перечислений являются игральные карты.
enum Colour{BLACK , RED}
enum Rank{A,2,3,4,5,6,7,8,9,10,J,Q,K}
enum Suit{SPADES,HEARTS,CLUBS,DIAMONDS}
Карта с рангом вне вышеуказанногоограниченный набор не имеет смысла.Таким образом, enum может использоваться для его представления.
Вы можете объявить интерфейс
interface CheckSuit
{
public boolean checkSuit( Suit suit );
}
и класс, который его реализует.
class CheckSpade implements CheckSuit
{
public boolean checkSuit( Suit suit )
{
return ( suit == Suit.SPADES );
}
}
и некоторый код, которыйиспользует это.Здесь мы объявляем suitChecker экземпляром интерфейса CheckSuit, и после назначения его новым CheckSpade мы можем взаимодействовать с ним только полиморфно как CheckSuit.Мы не знаем, что это такое (по крайней мере, без использования instanceof или аналогичного)
CheckSuit suitChecker = new CheckSpade();
Suit s = Suit.SPADES;
Suit d = Suit.DIAMONDS;
System.out.println( "s: " + suitChecker.checkSuit( s ) );
System.out.println( "d: " + suitChecker.checkSuit( d ) );