假设我有一个与BOB和ALICE的枚举,我将他们的年龄存储在一个字段中。我是否可以在枚举中使用更改其使用年限的方法?似乎编译器接受了它,但这是否有任何风险/这是不好的做法吗?举个例子:
public enum Friends {
BOB(14),
ALICE(22);
private int age;
private Friends(int age){
this.age = age;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
发布于 2016-12-17 22:46:31
Enum :允许在运行时更改
字段吗?
您不能更改枚举本身,但是您可以更改枚举值中定义的任何字段。
我可以在枚举中使用方法来改变它们的生命周期吗?似乎编译器接受了它,但这是否有任何风险/这是不好的做法吗?
是的,你可以,但这似乎是一个笨拙的使用枚举。
枚举被设计为表示“事物”的稳定和固定的枚举。
您可以将它们视为常量。
枚举类型是一种特殊的数据类型,它允许变量是一组预定义的常量。该变量必须等于为其预定义的值之一。常见的示例包括指南针方向(值为北、南、东和西)和星期几。
因为它们是常量,所以枚举类型字段的名称是大写字母。
使用Java Enums,这些东西本身可以通过属性来描述。
在定义枚举时,您可以这样做:
public enum Friends {
BOB(14),
ALICE(22);
private int age;
private Friends(int age){
this.age = age;
}
你的东西是朋友,年龄是朋友的财产。
枚举的问题是,您的东西似乎不是稳定的东西:友谊是可以移动的东西,以及您用来描述枚举的属性:age
也不是稳定的东西。
在您的示例中,您的朋友看起来像具有状态的实例。
因此,定义类(与Enum相对)来表示Friends,并在客户端代码中实例化和修改它们似乎是表示和操作它们的一种更自然的方式。
https://stackoverflow.com/questions/41199553
复制相似问题