У меня есть список констант, и я хочу проверить, равно ли значение, переданное методу, одной из констант. Я знаю Enums, что было бы хорошо, но мне нужно значение int здесь из соображений производительности. У перечисляемых значений может быть значение, но я боюсь, что получить значение int медленнее, чем напрямую использовать int.
public static final int
a = Integer.parseInt("1"), // parseInt is necessary in my application
b = Integer.parseInt("2"),
c = Integer.parseInt("3");
public void doIt(int param) {
checkIfDefined(param);
...
}
Вопрос о checkIfDefined
. Я мог бы использовать if
:
if(param == a)
return;
if(param == b)
return;
if(param == c)
return
throw new IllegalArgumentException("not defined");
Или я мог бы использовать Arrays.binarySearch(int[] a, int key)
, или ... любую лучшую идею?
Может быть, перечисления будут лучше не только по элегантности, но и по скорости, потому что мне не нужны проверки во время выполнения.
Решение
Поскольку enum
или switch
работали в моем специальном случае с parseInt
, я теперь использую простые старые int-константы вместе с Arrays.binarySearch
.