Prática recomendada para empacotar enums de Java? [fechadas]


8

Qual é a melhor prática para empacotar enums Java?

é um arquivo separado para cada enumeração?
ou
com o mesmo arquivo para todas as enumerações?

Quais são os prós e contras ?

Respostas:


9

Primeiro, uma regra primordial é que, se um enumfor público, ele deve ser declarado em um arquivo próprio. Esta é uma regra Java que se aplica a todas as classes, interfaces enumes que não podem ser quebradas.

Para enums não públicos , você deve seguir a mesma regra, exceto quando vários enums estão intimamente conectados.

Por exemplo, se você estiver construindo um processador de expressão e declarando uma enumeração para um subtipo de expressão, um subtipo de expressão binária e um subtipo de expressão unário, convém agrupar as três enumerações em um único arquivo.


Ótima explicação. Existe algum impacto no desempenho? se tivermos enumerações estreitamente conectadas na mesma classe em comparação a ter cada uma para cada enumeração.
goodspeed

1
@goodspeed A colocação de classes / enumerações / interfaces em arquivos não afeta o desempenho (exceto possivelmente um pequeno impacto na velocidade de compilação que você não perceberia).
dasblinkenlight

@dasblinkenlight Você tem documentação para provar sua segunda sentença, dizendo que enumerações públicas devem ser colocadas em seu próprio arquivo?
Max

1
@ Max As regras para enums não são diferentes das regras para outras classes: se uma classe é pública, ela precisa estar no arquivo em um local adequado, que corresponda ao nome do pacote, com o nome da classe que corresponde ao nome do arquivo.
precisa saber é o seguinte

@dasblinkenlight Ah, obrigado por suas informações e tempo.
Max

4

Enums são classes, então você deve agrupá-las como classes comuns. Se o enum for usado em muitos lugares dentro do pacote, coloque-o em um único arquivo. Se o enum estiver fortemente vinculado a uma classe, coloque-o como uma classe interna estática pública (ou protegida).

Não vejo razões para colocar todas as enumerações em um único arquivo, a menos que estejam relacionadas.


Se eles estiverem relacionados, você pode aninhar em uma classe. classe pública Pse164884 {Cat public enum {siamese, manx} public enum Dog {bullgog, poodle}}
Ray Tayek
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.