Эта статья в основном изучает соответствующее содержание перечисления вместо домена битов в Java, как подробно описано ниже.
Чтение заметок "Эффективная китайская версия Java 2"
Битовая доменная нотация позволяет эффективно выполнять операции битов, такие как объединение и пересечение. Но в домене бита есть все недостатки всегда освещения подсчета Int, и даже больше. Когда Bitfield напечатано в цифровой форме, гораздо сложнее перевести простую постоянную константу int. Даже нет простого способа пройти все элементы, представленные битфилдом.
// Постоянная перечисление поля бита - alcoletepublic class test {public static final byte style_bold = 1 << 0; // 1 публичный статический финальный байт style_italic = 1 << 1; // 2 Общественный статический финальный байт style_underline = 1 << 2; // 4 Public Static Final Byte Style_strikethrough = 1 << 3; // 6 // Параметр кубит или нулевой или более стиль_ константы public void applystyles (int styles) {...}}Пакет java.util предоставляет класс перечисления для эффективного представления нескольких коллекций множественных значений, извлеченных из одного типа перечисления. Этот класс реализует интерфейс SET, обеспечивая богатую функциональность, безопасность типа и совместимость, которые можно получить из любой другой реализации SET. Однако во внутренней конкретной реализации каждое содержимое перечисления представлено как вектор бита. Если базовый тип перечисления имеет 64 или меньше элементов - большинство из них. Весь перечисление представлен одной длинной, поэтому его производительность лучше, чем производительность верхней домены. Переработка пакетов, такая как Removeall и Retainall, реализована с использованием алгоритмов битов. Так же, как вручную заменить домены битов. Но вы можете избежать ошибок, которые подвержены ручным операциям и менее элегантному коду, потому что Enumset выполняет эту сложную задачу для вас. `
// enumset - современная замена для битового Fieldspublic Class Text {public enum style {жирный, курсив, подчеркивание, Strikethrough}; // Любой набор может быть передан, но Enumset, безусловно, лучше всего общедоступный Applystyles (set <Syle> styles) {System.out.println (styles); } public void test () {ApplyStyles (enumSet.of (style.bold, style.italic)); }} Выполнить test() и выход [BOLD, ITALIC] .
Класс Enumset сочетает в себе преимущества простоты и производительности битовых доменов и всех преимуществ перечисления, поэтому нет причин снова использовать битовые обозначения области. Если это не поле, которое представляет собой протокол связи.
Но на самом деле, Enumset также имеет недостаток - он не может создать неизменную перечисление, но мы можем инкапсулировать перечисление с помощью коллекций. UnmodifiableSet, но как на простоту, так и производительность.
public void test () {enumset <style> styles = enumset.of (style.bold, style.italic); Set <style> unmodifiablestyle = collections.unmodifiableset (styles); unmodifiablestyle.add (style.underline);}Таким образом, если вы добавите элементы в немодифицированное место, вы сообщите Java.lang.unsupportedOperationException
Суммировать
Выше приведено подробное объяснение перечисления вместо кода Битфилда в Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!