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 ?

boa velocidade
fonte

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.

dasblinkenlight
fonte
Ó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.

m3th0dman
fonte
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