共享2个类的数据

时间:2011-06-24 13:39:37

标签: java inheritance

我必须在两个班级中分享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。为什么会这样呢?我该如何纠正?

4 个答案:

答案 0 :(得分:3)

您创建的thisContactUpdateProcessStepOneFrame实例<{1}}变量拥有。如果您想在UpdateProcessStepTwoFrame的所有实例之间共享thisContact,则必须将其定义为ApplicationDataPool。这意味着变量将由类拥有而不是其实例。

static

答案 1 :(得分:1)

班级UpdateProcessStepOneFrameUpdateProcessStepTwoFrame彼此不了解,因此您需要在setThisContact(something)班级UpdateProcessStepTwoFrame进行getThisContact才能{{1}}不是空的。

答案 2 :(得分:0)

有两个不同的类...所以String [] theContact在第二个类中将为null,除非你设置它...

答案 3 :(得分:0)

第一次致电

  setThisContact(something);

设置UpdateProcessStepOneFrame对象的数组(通过基类)。

然后执行此操作时:

 UpdateProcessStepTwoFrame step2 = new UpdateProcessStepTwoFrame();

你正在用一个独立的数组创建一个新对象,它永远不会初始化,因此会在theContact.length上抛出一个NPE