定义枚举时的好习惯是什么?
例如,我有一个Person类。对于本课程,我选择使用值为MALE和FEMALE的枚举。
枚举应该在Person类中定义还是单独定义?枚举应该定义为私有还是公共?另外,您是否有任何进一步的建议可以使枚举尽可能灵活?
答案 0 :(得分: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
,它定义了在类中使用的许多与日期相关的常量。
答案 1 :(得分:3)
要获得完全的灵活性,请将其添加到静态类中。但当然,这仅适用于需要在整个应用程序中使用的枚举。对于本地和专业的枚举,最好让它们“接近”它们的使用位置。 Exampli gratia ,我有一个IPHandler类,它使IPv4和IPv6地址的处理,解析和转换对类用户透明(IPHandler是一个静态类)。它有一个枚举IPType,其值为IPv4和IPv6,仅在IPHandler中用于多个操作。由于它没有在其他地方使用,因此它已在IPHandler类中定义。