Java枚举允许您向构造函数传递参数,但似乎无法传递数组。例如,以下代码编译时没有错误:
enum Color {
RED(255,0,0),
GREEN(0,255,0),
BLUE(0,0,255);
int[] rgb;
Color(int r, int g, int b) {
rgb[0] = r;
rgb[1] = g;
rgb[2] = b;
}
}
但如果这个数据作为一个数组常数传递进来,那么代码将无法编译:
enum Color {
RED({255,0,0}),
GREEN({0,255,0}),
BLUE({0,0,255});
int[] rgb;
Color(int[] rgb) {
this.rgb = rgb;
}
}
我也尝试了创建新的int[]数组的不同方法,例如:
...
RED(new int[]{255,0,0}),
...
我没有运气。我认为问题在于传递一个数组常量。我不确定是需要修正简单的语法还是存在传递此类数据的潜在问题。提前感谢。
RED(new int[]{255,0,0})
应该可以正常工作,尽管 @Mark Peters 的解决方案是理想的。 - Priyal