在Java中定义枚举

时间:2011-11-02 12:48:05

标签: java enums

我有一个用Java描述参数(name:Param)的类和另一个我在其中声明和初始化大约100个这样的参数的类:


    private static final Param param_name_1 = new Param(x, y, z);

我想将所有这些对象/实例放在枚举中并在那里初始化它们。这样做的最佳方法是什么?

=== UPDATE ===

我问了enum的语法,但不是那样。

我的情况Param是另一个java类,它有自己的参数,getter和setter以及一个在paranthesis之间有3个参数的构造函数:

public Param(intx, int y, int z){
this.x = x;
this.y = y;
this.z = z;
}

我的另一个类我声明并初始化了上面写的Param类的100个实例。每个实例的每个x,y和z都不同。

枚举应该包含实例的声明,也可能初始化它们。

3 个答案:

答案 0 :(得分:3)

假设您正在询问枚举语法,那么您可以执行类似的操作(假设xyz是编译时常量。)

 public enum Param {
    param_name_1(1,2,3),
    param_name_2(3,4,5);

    private int x;
    private int y;
    private int z;

    private Param(int x, int y, int z) {
       this.x=x;
       this.y=y;
       this.z=z;
    }
 }

答案 1 :(得分:3)

enum是一种特殊类型的类,因此您可以声明构造函数,字段和方法以及实现接口。但是,他们不能extend其他类。

在这种情况下,我会建议final字段和getter,如下所示:

public enum Param {

    PARAM_A(1, 2, 3), 
    PARAM_B(4, 5, 6), 
    PARAM_C(1, 3, 5);

    private final int x;
    private final int y;
    private final int z;

    private Param(int x, int y, int z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public int getZ() {
        return z;
    }
}

答案 2 :(得分:1)

我认为这就是你想要的

class Param
{
        private int x, y, z;
        public Param(int x, int y, int z)
        {
                this.x = x; this.y = y; this.z = z;
        }
}

public class t
{

        private enum ParamVals
        {
                VAL1(new Param(0,0,0)),
                VAL2(new Param(1,1,1));

                private Param paramVal;

                private ParamVals(Param paramVal)
                {
                        this.paramVal = paramVal;
                }

                public Param getVal()
                {
                        return paramVal;
                }
        }
}