Singleton类调用为主类提供空指针异常

时间:2011-06-15 18:49:15

标签: java

所以我前几天在这里有一个问题,关于如何使用两个不同的其他类访问相同的数据类而不创建单独的实例。建议使用单身人士,所以我做了一些研究,但没有太多关于它。

我遇到的问题是我的主类在尝试访问数据单例时会获得空指针异常。但我的其他类可以访问它并获得数据就好了。这有多可能?我有一个非常基本的设置...

public enum laneData {
    INSTANCE;
    private String laneID;

    public String getLaneID() {
        return laneID;
    }

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

}

主要课程电话

 private laneData laneData;
 public void init() {
     laneData.setLaneID("test"); //these two lines each throw null pointer unless commented out
     System.out.println(laneData.getLaneID()); 
     ....

其他班级

public class XMLParser {
private LaneGUI laneGUI;
private laneData laneData;


public void parseInputString(String input){ 
laneData.setLaneID(getCharacterDataFromElement(line));  //both of these work fine
System.out.println("stored ID: " + laneData.getLaneID());

2 个答案:

答案 0 :(得分:4)

您需要private laneData laneData = laneData.INSTANCE;

您也可以使用laneData.INSTANCE.getLaneID()

Java指南还建议将Class和Enum名称大写,I.E。 LaneData

答案 1 :(得分:2)

  

建议使用单身人士   所以我做了一些研究,但那里   不是很多。

关于单身人士模式有很多。

这是一个单例示例(注意差异)

public class MySingleton {
    private String label;
    private static MySingleton single;
    private MySingleton(String label) {
        this.label = label;
    }

    public static MySingleton getInstance(String label) {
        if (singleton == null) singleton = new MySingleton(label);
        return singleton;
    }
}