我必须在两个班级之间共享一个String[]。一类设置数组,另一类获取数组。我上了四节课。一个包含超类级别的Array,并且在子类中访问该数组。一个班级持有main()
他们来了。

ApplicationDataPool.java

public class ApplicationDataPool extends JFrame {
    String[] thisContact;

    public ApplicationDataPool() {
        super("Update Record");
    }

    public String[] getThisContact() {
        return thisContact;
    }

    public void setThisContact(String[] thisContact) {
        this.thisContact = thisContact;
    }


}


UpdateProcessStepOneFrame.java

public class UpdateProcessStepOneFrame extends ApplicationDataPool {

        public UpdateProcessStepOneFrame() {
            String[] something = { "fname", "lname" };
            setThisContact(something);
            UpdateProcessStepTwoFrame step2 = new UpdateProcessStepTwoFrame();
            step2.setVisible(true);
        }

    }


UpdateProcessStepTwoFrame.java

public class UpdateProcessStepTwoFrame extends ApplicationDataPool{

    public UpdateProcessStepTwoFrame(){
    String[] theContact = getThisContact();
    //Here is the problem
    //Exception in thread "main" java.lang.NullPointerException
      System.out.println(theContact.length);
    }

}


问题:每当我在任何地方访问数组时,Java都会抛出一个NullPointerException。为什么会这样呢?我该如何纠正?

最佳答案

您的thisContact变量由您创建的UpdateProcessStepOneFrameUpdateProcessStepTwoFrame的实例拥有。如果要在所有thisContact实例之间共享ApplicationDataPool,则必须将其定义为static。这意味着变量将由该类而非其实例拥有。

protected static String[] thisContact;

10-07 19:47
查看更多