Почему Enum считается более безопасным, чем константы? - PullRequest
3 голосов
/ 20 октября 2010

В нашем примере мы можем выбрать определение перечислимого типа, которое ограничит возможные присвоенные значения (т. Е. Улучшенную безопасность типов):

public class OfficePrinter {

public enum PrinterState { Ready, OutOfToner, Offline };
public static final PrinterState STATE = PrinterState.Ready;
}

static final char MY_A_CONST = 'a';

Ответы [ 3 ]

17 голосов
/ 20 октября 2010

Представьте себе эти две сигнатуры метода:

void rawF(char someFlag);

void enumF(MyFlags someFlag);

Последний является более строгим, поскольку допустимы только допустимые значения MyFlags.В первом случае любой символ может быть передан , даже если используются только значения, определенные в «константах».

Счастливое кодирование.

1 голос
/ 20 октября 2010

Использование enum над константами помогает с безопасностью типов, потому что, если функция принимает перечисление, и вы передаете ему что-нибудь, кроме перечисления, компилятор будет жаловаться. С константами вы принимаете довольно большой диапазон данных, большинство из которых являются недействительными.

1 голос
/ 20 октября 2010

Вы можете передать MY_A_CONST любому методу, который принимает символ.Вы также можете передать любой другой символ в метод, который принимает символ.

Вы можете передать Ready, OutOfToner, Offline и null в метод, который принимает PrinterState.

Вы получаете безопасность,возможность ограничения общего набора значений, которые могут быть переданы методу (или назначены переменной).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...