Este artigo estuda principalmente o conteúdo relevante do enumset, em vez do domínio de bit em Java, conforme detalhado abaixo.
Notas de leitura "Java Chinese Versão 2" eficaz "
A notação de domínio bit permite que as operações de bit sejam executadas efetivamente, como união e interseção. Mas o domínio bit tem todas as desvantagens de sempre iluminar a enumeração int e ainda mais. Quando o campo de bits é impresso de forma digital, é muito mais difícil traduzir uma constante simples de enumeração int. Mesmo não há maneira fácil de atravessar todos os elementos representados por um campo de bits.
// constante de enumeração de campo de bits - obsoletepublic Class Test {public static final byte style_bold = 1 << 0; // 1 public estático final byte style_italic = 1 << 1; // 2 public static final byte style_underline = 1 << 2; // 4 public static final byte style_strikethrough = 1 << 3; // 6 // O parâmetro é bit ou de zero ou mais Style_ Constants public void ApplyStyles (int Styles) {...}}O pacote java.util fornece a classe Enumset para representar efetivamente várias coleções de múltiplos valores extraídos de um único tipo de enum. Esta classe implementa a interface do conjunto, fornecendo funcionalidade rica, segurança do tipo e interoperabilidade que podem ser obtidos em qualquer outra implementação de conjunto. No entanto, na implementação específica interna, cada conteúdo do enumset é representado como um vetor bit. Se o tipo de enumeração subjacente tiver 64 ou menos elementos - a maioria deles é. Todo o enumset é representado por um único longo, portanto seu desempenho é melhor que o desempenho do domínio superior. O processamento em lote, como removealmente e retomado, é implementado usando algoritmos de bits. Assim como substituir manualmente os domínios de bits. Mas você pode evitar erros propensos a operações manuais e um código menos elegante, porque o Enumset faz essa tarefa difícil para você. `
// enumset - um substituto moderno para o texto da classe Bit Fieldspublic {public Enum Style {Bold, Italic, Subline, Strikethrough}; // qualquer conjunto pode ser passado, mas o enumset é claramente o melhor vazio público Aplicaçãostyles (estilos <style> styles) {System.out.println (Styles); } public void test () {ApplyStyles (enumset.of (style.Bold, style.italic)); }} Executar test() e saída [BOLD, ITALIC] .
A classe Enumset combina as vantagens de simplicidade e desempenho dos domínios de bits e todas as vantagens dos tipos de enum, portanto, não há razão para usar a notação de domínio de bit novamente. A menos que seja um campo que constitua um protocolo de comunicação.
Mas, de fato, o enumset também tem uma desvantagem - ele não pode criar enumset imutável, mas podemos encapsular o enumset com coleções.UnModifiableSet, mas a simplicidade e o desempenho são afetados.
public void test () {enumset <style> styles = enumset.of (style.bold, style.italic); Set <Style> desmodifiablestyle = collection.unmodifiableSet (Styles); desmodifiablestyle.add (style.underline);}Dessa forma, se você adicionar elementos ao não modificado, você reportará java.lang.unsupportEdOperationException
Resumir
O exposto acima é toda a explicação detalhada do enumset em vez do código Bitfield em Java. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!