3

SharedData.java という名前のゲッター セッター クラスがあります。コードでそれを暗示しようとすると、null ポインター例外が発生します。ここに 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);

オブジェクトへの参照はまだ であるため、これは違法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

変化するprivate static SharedData instance = null;

private static SharedData instance = this;

クラスを静的にします

public static class SharedData {

また、ゲッターセッターを静的にします。

于 2012-09-12T17:28:16.700 に答える
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 に答える