簡體   English   中英

java中getter setter的空指針異常

[英]Null pointer exception on getter setter in java

我有一個名為 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);

有人可以幫我解決這個問題嗎? 謝謝 。

您從未初始化sharedData ,因此它的值為null ,調用它的方法sharedData您的程序崩潰。

我認為您正在嘗試使用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;
}
SharedData.getInstance();

返回null 稍后您嘗試對其調用方法:

sharedData.setSrc_latitude(latitude);

這是非法的,因為對 object 的引用仍然是null

您沒有實例化該類,因此getInstance()返回null

在課程開始時,替換:

private static SharedData instance = null;

經過 :

private static SharedData instance =  new SharedData() ; // creates a new instance

即使使用singleton pattern您也應該至少實例化一次對象SharedData

試試這個

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

更改private static SharedData instance = null;

private static SharedData instance = this;

並使您的課程成為靜態

public static class SharedData {

此外,使吸氣劑設置器靜態..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM