3

我有一个名为 SharedData.java 的 getter setter 类。当我要在我的代码中暗示它时,我得到了空指针异常。这是 SharedData 类:

public class SharedData {
private static SharedData instance = null;

public SharedData() {
    // randomizeServers();
}

// data to be shared
private double src_latitude = -1;
private double src_longitude = -1;
private double end_latitude = -1;
private double end_longitude = -1;

//Getter-Setters
public static SharedData getInstance() {
    return instance;
}
public static void setInstance(SharedData instance) {
    SharedData.instance = instance;
}

public double getSrc_latitude() {
    return src_latitude;
}
public void setSrc_latitude(double src_latitude) {
    this.src_latitude = src_latitude;
}
public double getSrc_longitude() {
    return src_longitude;
}
public void setSrc_longitude(double src_longitude) {
    this.src_longitude = src_longitude;
}
public double getEnd_latitude() {
    return end_latitude;
}
public void setEnd_latitude(double end_latitude) {
    this.end_latitude = end_latitude;
}
public double getEnd_longitude() {
    return end_longitude;
}
public void setEnd_longitude(double end_longitude) {
    this.end_longitude = end_longitude;
}

}

这是我的代码:

       SharedData sharedData ;  
       sharedData = SharedData.getInstance();
       sharedData.setSrc_latitude(latitude);
   sharedData.setEnd_longitude(longitude);

有人可以帮我吗?谢谢 。

4

5 回答 5

6

你从来没有初始化过sharedData,所以它的值是null,在它上面调用一个方法会让你的程序崩溃。

我认为您正在尝试使用Singleton Pattern. 试试下面的:

private static SharedData instance = new SharedData();   \\ Initialize here

private SharedData() {        // Make it private....
    // randomizeServers();
}

// data to be shared
private double src_latitude = -1;
private double src_longitude = -1;
private double end_latitude = -1;
private double end_longitude = -1;

//Getter-Setters
public static SharedData getInstance() {
    return instance;
}
于 2012-09-12T17:26:38.020 回答
3
SharedData.getInstance();

退货null。稍后您尝试在其上调用方法:

sharedData.setSrc_latitude(latitude);

这是非法的,因为对 object 的引用仍然是null.

于 2012-09-12T17:26:47.090 回答
2

你没有实例化这个类,所以getInstance()返回null

在课程开始时,替换:

private static SharedData instance = null;

经过 :

private static SharedData instance =  new SharedData() ; // creates a new instance
于 2012-09-12T17:25:31.787 回答
1

即使使用 ,您也应该至少singleton pattern实例化对象一次。SharedData

试试这个

SharedData sharedData = new SharedData();  
       sharedData = SharedData.getInstance();
       sharedData.setSrc_latitude(latitude);
   sharedData.setEnd_longitude(longitude);
于 2012-09-12T17:27:28.510 回答
1

改变private static SharedData instance = null;

private static SharedData instance = this;

并使您的班级静态

public static class SharedData {

另外,使吸气剂二传手静态..

于 2012-09-12T17:28:16.700 回答