具有属性Java的枚举

时间:2015-03-28 16:18:53

标签: java enums

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

 public enum Color {

        RED, ORANGE, YELLOW;
}

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

或者我必须做这样的事情,其中​​颜色是一个类?

public Red extends Color {
   private static int x;

   public int getRedValue(){
        return x;
   }

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

2 个答案:

答案 0 :(得分:5)

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

    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字段设为私有,并创建accessor和mutator方法(请参阅代码注释)。这是如何工作的,你通过在创建枚举的新实例时调用的构造函数为字段提供值。您可以根据需要向构造函数添加更多字段和参数。

答案 1 :(得分:2)

你可以做类似的事情 -

public enum Color {

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

    private int value;

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

    public int getValue() {
        return value;
    }

}