Java枚举:封装和运行时初始化
在回家的路上我有一个有趣的问题 我有一个枚举Java枚举:封装和运行时初始化,java,enums,Java,Enums,在回家的路上我有一个有趣的问题 我有一个枚举 public enum Gender{ Yes(Constants.male()), female(Constants.female()); private final String value; private Gender(String option){ value = option; } } 。。我应该封装该值还是将其声明为公共值 运行时初始化值有缺点吗?在您的情况下,应该没有太大区别
public enum Gender{
Yes(Constants.male()), female(Constants.female());
private final String value;
private Gender(String option){
value = option;
}
}
。。我应该封装该值还是将其声明为公共值
运行时初始化值有缺点吗?在您的情况下,应该没有太大区别,
字符串
类是不可变的。但是,由于封装是一种良好的做法,因此建议使用这种方法
至于“运行时”init,我不知道你的意思。枚举本质上是单例的,所以在类加载时将初始化它。这是在运行时,是的,但没有缺点;尤其是如果您不想硬编码这些值
编辑
正如@GyroGearless指出的,该字段应声明为
final
,这是最佳做法,即使它不是public
,因为它是构造函数中设置的常量。Ha<代码>性别.是->男性是
和女性
?构造函数名为Option
而不是Gender
?对不起,应该是Gender=xAlas,字符串是不可变的,但值字段不是!如果公开,则应宣布为“最终公开”!我还更喜欢使用getter封装字段,以便与广泛接受的最佳实践更加一致。如果是public
,那么好的观点应该是final
。