具有属性 Java 的枚举

Enums with attributes Java

每种颜色都有自己的静态属性——一个数字。我希望能够使用一种方法更改此值。我能以某种方式使用枚举来做到这一点吗?像这样或可能不同:

 public enum Color {

        RED, ORANGE, YELLOW;
}

Color.RED.setValue(x);
Color.RED.getValue();

或者我是否必须做这样的事情,其中​​颜色是 class?

public Red extends Color {
   private static int x;

   public int getRedValue(){
        return x;
   }

   public void setRedValue(int x){
        this.x = x;
   }
}

是的,您可以执行以下操作:

    enum Colour{

        RED(1), BLUE(2);

        public int value;

        Colour(int valueArg){ 
            value = valueArg; 
        }

        /*public setValue(int a){
            value = a;
        }

        public getValue(){
            return value;
        }*/

    }

    public class Test{
        static Colour colour = Colour.BLUE;
        public static void main(String[] args){
            colour.value = 3;
            //colour.setValue(3);
       }
  }

您可以使用您喜欢的任何变量类型来执行此操作。 这里,Colour 枚举的每个实例都有一个关联的整数值。或者,将 value 字段设为私有并创建访问器和修改器方法(请参阅代码注释)。这是如何工作的,你通过一个构造函数为字段提供一个值,当你对枚举进行新的实例化时调用该构造函数。您可以根据需要向构造函数添加更多字段和参数。

你可以这样做 -

public enum Color {

    RED(2), ORANGE(4), YELLOW(6);

    private int value;

    private Color (int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

}