我必须在两个班级之间共享一个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
变量由您创建的UpdateProcessStepOneFrame
或UpdateProcessStepTwoFrame
的实例拥有。如果要在所有thisContact
实例之间共享ApplicationDataPool
,则必须将其定义为static
。这意味着变量将由该类而非其实例拥有。
protected static String[] thisContact;