为什么我不能在java中像这样懒惰初始化静态长数组?

use*_*534 4 java static-members lazy-initialization

private static final long[] reservedFromIps;

static {
    reservedFromIps = {0l, 167772160l, 1681915904l, 
        2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l, 
        3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l}; 
}
Run Code Online (Sandbox Code Playgroud)

错误是"表达式的非法启动,而不是声明,;预期"

而以下工作正常:

private static final long[] reservedFromIps = {0l, 167772160l, 1681915904l, 
    2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l, 
    3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l}; 
Run Code Online (Sandbox Code Playgroud)

Kep*_*pil 5

这与static块无关,数组常量只能在初始化器中使用.这就是语言的指定方式.
这段代码不会编译:

public class Test {
    public static void main(String[] args) {
        long[] reservedFromIps;
        reservedFromIps = {0l, 167772160l, 1681915904l, 
                2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l, 
                3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l}; 
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会出现这种情况可能是编译器增加复杂性而增加额外收益的问题,但要完全确定您必须与Java设计团队合作.