枚举练习 - 在课堂内/单独定义,制作公共/私人

Jam*_* P. 9 java enums

定义枚举时的好习惯是什么?

例如,我有一个Person类.对于本课程,我选择使用值为MALE和FEMALE的枚举.

枚举应该在Person类中定义还是单独定义?枚举应该定义为私有还是公共?另外,您是否有任何进一步的建议可以使枚举尽可能灵活?

Boh*_*ian 9

恕我直言,让它成为一个public static enum内部class Person.

原因是enum Gender它只适用于Person,所以把它放在那里它们被束缚在一起(没有人的上下文,性别没有用).

好处:

  • 减少阶级膨胀
  • 如果您将Person移动到另一个包/项目,性别将始终伴随它
  • 作为唯一用户的人具有"控制权"并且可以根据需要改变它,例如
    • 加入 private List<HealthIssue> genderSpecificHealthIssues;
    • 添加更多的枚举,例如TRANSGENDER,INTERSEX或任何

唯一的缺点是你必须使用static导入来使用它,即import static com.company.Person.Gender.*;.

在许多JDK类中都可以看到这种模式,例如,Calendar它定义了它类中使用的许多与日期相关的常量.