从返回null的数据类访问数据

时间:2011-06-14 20:45:06

标签: java

好吧,我不是java的新手,但由于一些奇怪的原因,我无法弄清楚为什么这对我不起作用。基本上我的applet中有3个类。

我的主要,我的字符串构造函数和我的数据类。

主类调用字符串构造函数,字符串构造函数将其最终产品存储到数据类中。最后,我正在尝试使用我的Main类访问数据类。

main的返回值始终为null,我无法弄清楚原因。我怀疑是我在某种程度上创建了两个独立的数据类对象,但我看了代码的例子,这看起来都是正确的。这是班级..

public class LaneGUI extends javax.swing.JApplet {

private laneData laneData;


Timer timer;
/** Initializes the applet LaneGUI */
public void init() {        

    laneData = new laneData();
    xmlParser.parseInputString(connection.getFinalXMLString());
    System.out.println(laneData.getLaneID()); 

string contructor ...

public class XMLParser {

private laneData laneData;


public void parseInputString(String input){    
  try{     
    /*some xmlparsing*/        
    laneData = new laneData();
    laneData.setLaneID(string);

数据类

public class laneData {
private String laneID;

public String getLaneID() {
    return laneID;
}

public void setLaneID(String laneID) {
    this.laneID = laneID;
}

}

这里有很多编辑,比如我在字符串类中完成了所有的xml解析和字符串编辑。

基本上,当我在字符串构造函数中设置它之后检查getLaneID时,值是正确的。但是,当我从主要调用get时,它为null。

2 个答案:

答案 0 :(得分:1)

XMLParser和LaneGUI指的是laneData的两个不同实例。

而不是你在LaneGUI中的最后一行,它说:

System.out.println(laneData.getLaneID()); 

你需要这样的东西:

System.out.println(xmlParser.getLaneData().getLaneID()); 

您还需要向XMLParser添加一个getLaneData(),它返回它的laneData实例(或其深层副本。)

答案 1 :(得分:0)

正如您正确推测的那样,您有两个不同的laneData实例。 XMLParser类的本地实例laneDataLaneGUI引用的实例不同。