Одна из причин, по которой вы увидите код, использующий флаги int
вместо enum
, заключается в том, что в Java не было перечислений до Java 1.5
Так что, если вы смотрите на код, который был изначально написандля более старой версии Java шаблон int
был единственным доступным вариантом.
Существует очень небольшое количество мест, где использование int
флагов все еще предпочтительнее в современном коде Java, но в большинствеВ случаях, когда вы предпочитаете использовать enum
, из-за безопасности и выразительности типов, которые они предлагают.
С точки зрения эффективности, это будет зависеть от того, как именно они используются.JVM обрабатывает оба типа очень эффективно, но метод int, вероятно, будет несколько более эффективным для некоторых случаев использования (поскольку они обрабатываются как примитивные, а не объекты), но в других случаях перечисление будет более эффективным (потому что оно не 'т надо бросать бокс / распаковку).
Вам будет трудно найти ситуацию, в которой разница эффективности будет каким-либо образом заметна в реальном приложении , поэтому вы должны принимать решение, основываясь на качествекод (удобочитаемость и безопасность), который должен привести вас к , используйте перечисление 99% времени .