使用索引初始化静态最终数组

Bep*_*i's 1 java arrays multidimensional-array

我想初始化一个多维私有静态最终的int数组,索引值.

private static final int[][] a = { {0,0,0}, {1,2,3} };
Run Code Online (Sandbox Code Playgroud)

这对我不好.我在某处找到了这个奇怪的语法,但是我还是不想编译.我添加它来澄清我需要的东西:

private static final int[][] a;
private static {
    a = new int[NUM_TYPES][3];
    a [TYPE_EMPTY]  =   { 0, 0, 0 };
    a [TYPE_NORMAL] =   { 1, 2, 3 };
    };
Run Code Online (Sandbox Code Playgroud)

不同的是,现在我应该有[TYPE_EMPTY]和[TYPE_NORMAL]而不是[0]和[1].在实际方面它是相同的,但第二个使得源更加清晰,无差错和可维护.

例如,如果我将来添加一个新的TYPE,我不需要关心数组中的数字索引.

正如我所说,我没有找到任何正确的语法来做到这一点,上面的语法是完全错误的.一些Java专家会给我一个简短的教训吗?:) 非常感谢你.

Sub*_*der 7

试试这个 -

private static final int[][] a;
private static final int NUM_TYPES  = 2;
private static final int TYPE_EMPTY = 0;
private static final int TYPE_NORMAL = 1;

static { // static initializer  block.
    a = new int[NUM_TYPES][3];
    a [TYPE_EMPTY] =  new int[]{ 0, 0, 0 };
    a [TYPE_NORMAL] = new int[]{ 1, 2, 3 };
}
Run Code Online (Sandbox Code Playgroud)

参考静态初始化块