我有一个用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都不同。
枚举应该包含实例的声明,也可能初始化它们。
答案 0 :(得分:3)
假设您正在询问枚举语法,那么您可以执行类似的操作(假设x
,y
和z
是编译时常量。)
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;
}
}
}