Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

What is the best practice for packaging Java enums?

is it separate file for each enum?
or
having same file for all the enums?

What are the pros and cons ?

share|improve this question
add comment

2 Answers

First, an overriding rule is that if an enum is public, it must be declared in a file of its own. This is a Java rule that applies to all classes, interfaces, and enums, which cannot be broken.

For non-public enums, you should follow the same rule, except when multiple enums are closely connected.

For example, if you are building an expression processor and declaring an enumeration for an expression sub-type, a binary expression sub-type, and a unary expression sub-type, you may want to group the three enumerations together in a single file.

share|improve this answer
    
Great explanation. Is there any performance impact? if we have closely connected enums in same class as compared to having each for each enum. –  goodspeed Sep 14 '12 at 16:00
1  
@goodspeed Placement of classes/enums/interfaces in files has no performance impact (except possibly a tiny impact on compilation speed that you would not notice anyway). –  dasblinkenlight Sep 14 '12 at 16:09
add comment

Enums are classes so you should pack them as ordinary classes. If the enum is used in many places inside the package then put it in a single file. If the enum is strongly linked with a class, then put it as a public (or protected) static inner class.

I do not see reasons for placing all the enums in a single file unless they are related.

share|improve this answer
    
If they are related, you can nest them in one class. public class Pse164884 { public enum Cat { siamese, manx} public enum Dog { bullgog, poodle } } –  Ray Tayek Apr 13 '13 at 23:49
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.