Ответ 1
Было довольно удивлено, что он использует битовые поля, а не EnumSet
. Рациональное, хотя обсуждается в этом потоке рассылки. Похоже, что причина заключалась в том, чтобы установить и отключить различные характеристики, не затрагивая тот, который был на конце вызывающего. С помощью EnumSet
, чтобы реализовать это, нужно было бы создать новый объект EnumSet
каждый раз, когда необходимо изменить его на разных этапах. Я думаю, это причина, по которой бит-поля выигрывают гонку там.
Заключительное предложение этой темы по существу предвосхищает ваш вопрос здесь:
Наличие таких флагов в API Java 8 (и должно) бровей, потому что это идет вразрез с тем, что сказали людям хорошо более десятилетия. Если он принят как есть, лучше быть хорошим объяснение читателям doc о том, почему альтернативы были отклонены. "Мы были удобно с флагами int и ничего более значительно лучше сам" не сократит его ". Мы знаем, что флаги int не очень хороши для API, но мы очень старался найти лучшие альтернативы, безрезультатно" (если бы это было верно).