문제

So I have an interface, it's got a few constant integers declared and I can access these in any class which implements said interface.

I just declared an array of constant strings in the interface, and I tried to access it, resulting in a null pointer expression, my array is declared like so:

public static final String[] STRINGS = {"bla","bla","bla","bla", "bla", "bla"};

In the test program, the following line returns a NullPointerException:

System.out.println(STRINGS[1]);

So, my question: Is there any problem here, or can you only work with integer constants in an interface?

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

 ....

The above code shows the test class, NUMBER and STRINGS are declared in MyInterface, I've changed the names for simplicity.

Thanks in advance.

도움이 되었습니까?

해결책

Elements in an Object array are null by default. Ensure that each JCheckBox is initialized before attempting to invoke a method on the component

for (int i=0; i < checkBoxes.length; i++) {
    checkBoxes[i] = new JCheckBox();
}

다른 팁

This woks perfectly ok.

public interface Trail {
    public static final String[] STRINGS = {"bla","bla","bla","bla", "bla", "bla"};
}

Implementation

public class X implements Trail{
    public void get() {
        System.out.println(STRINGS[1]);
    }
}

public class TEstMain {
public static void main(String[] args) {

    X x = new X();
    x.get();
}

Output:

bla
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top