【发布时间】:2014-02-21 14:20:29
【问题描述】:
所以我有一个接口,它声明了一些常量整数,我可以在任何实现所述接口的类中访问它们。
我刚刚在接口中声明了一个常量字符串数组,我试图访问它,结果是一个空指针表达式,我的数组是这样声明的:
public static final String[] STRINGS = {"bla","bla","bla","bla", "bla", "bla"};
在测试程序中,下面这行返回一个 NullPointerException:
System.out.println(STRINGS[1]);
所以,我的问题是:这里有什么问题吗,还是只能在接口中使用整数常量?
public class MyFrame extends JFrame implements MyInterface {
....
....
private static JCheckBox[] checkBoxes = new JCheckBox[NUMBER];
....
....
int counter = 0;
for (JCheckBox box : checkBoxes) {
box.setText(STRINGS[counter]);
box.setSelected(false);
checkBoxPane.add(box);
counter++;
}
....
上面的代码显示了测试类,NUMBER 和 STRINGS 在 MyInterface 中声明,为简单起见,我更改了名称。
提前致谢。
【问题讨论】:
-
我们可以看看你的完整代码吗?
-
"你只能在接口中使用整数常量吗?"没有。
-
测试类代码在哪里
-
请注意,这并不是一个真正的常量数组。任何人都可以做
Constants.STRINGS[1] = null;。为了保证不变性,你应该使用List<String> STRINGS = Collections.unmodifiableList(Arrays.asList("bla", "bla")); -
完整的异常堆栈跟踪是什么?
标签: java interface nullpointerexception constants final