gpt4 book ai didi

java - 为什么我不能像这样在 Java 中延迟初始化静态长数组?

转载 作者:搜寻专家 更新时间:2023-11-01 01:36:18 25 4
gpt4 key购买 nike

private static final long[] reservedFromIps;

static {
reservedFromIps = {0l, 167772160l, 1681915904l,
2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l,
3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l};
}

错误是“表达式的非法开始,而不是语句,;预期”

而以下工作正常:

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

最佳答案

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

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};
}
}

为什么会出现这种情况可能是编译器的复杂性增加而几乎没有增加 yield 的问题,但要完全确定您必须与 Java 设计团队一起解决这个问题。

关于java - 为什么我不能像这样在 Java 中延迟初始化静态长数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12485346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com