我有一个有点不典型的静态常量值,我想通过以下方式声明它:
protected static final int[][] a = new int [][] { {34,16}, {50,16}, {66,16}, {82,16}, {98,16}, {114,16}};
不幸的是它被拒绝了。除非使用常量表达式初始化,否则在非静态内部类型中字段 a 不能声明为静态。
为了完全确定我们对情况有相同的概述,这是内部类的领域。
我也尝试将其声明为
protected static final int[][] a = { {34,16}, {50,16}, {66,16}, {82,16}, {98,16}, {114,16}};
它也不起作用。 :(
即使我尝试使用静态初始化程序,也是同样的情况:
protected static final int[][] a;
static { a = new int [][] { {34,16}, {50,16}, {66,16}, {82,16}, {98,16}, {114,16}}};
当我删除 new int[][] 时,它也被拒绝。
为什么不起作用?当然,我可以跳过静态并将其视为非静态字段,但如果它是常量值,为什么不将其设为静态?
最佳答案
看起来你有类似的东西:
class inner{
protected static final int[][] a = { {34,16}, {50,16}, {66,16}, {82,16}, {98,16}, {114,16}};
}
您可以删除静态并仍然直接访问a
。
class inner{
protected final int[][] a = { {34,16}, {50,16}, {66,16}, {82,16}, {98,16}, {114,16}};
}
内部类只能有静态常量字段。
关于java - 最终静态数组 - 非典型常量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18542228/