Pengecualian penunjuk nol pada penyetel pengambil di java

Saya memiliki kelas penyetel pengambil bernama SharedData.java . Saya mendapatkan pengecualian penunjuk nol ketika saya akan menerapkannya pada kode saya. Berikut adalah kelas 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;
}

}

Ini kode saya:

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

Adakah yang bisa membantu saya dengan ini? Terima kasih .


person Fahim Ahmed    schedule 12.09.2012    source sumber
comment
Saya mendapatkan pengecualian penunjuk nol =› baca jejak tumpukan, temukan baris yang sesuai dalam kode Anda, temukan apa yang salah pada baris itu.   -  person assylias    schedule 12.09.2012


Jawaban (5)


Anda tidak pernah menginisialisasi sharedData, jadi nilainya adalah null, memanggil metode di dalamnya membuat program Anda mogok.

Saya pikir Anda mencoba menggunakan Singleton Pattern. Coba yang di bawah ini:

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;
}
person Kumar Vivek Mitra    schedule 12.09.2012
comment
Saya akan sangat berterima kasih kepada orang yang baru saja memberi suara negatif pada pertanyaan saya, bahkan setelah pertanyaan ini benar...... - person Kumar Vivek Mitra; 12.09.2012
comment
setelah melakukan ini, ketika saya mencoba memulai sharedData, muncul kesalahan berikut: Konstruktor SharedData() tidak terlihat. - person Fahim Ahmed; 12.09.2012
comment
ups maaf! itu berhasil. Saya memasukkannya lagi ke dalam kode saya secara keliru. Terima kasih banyak . :-) - person Fahim Ahmed; 12.09.2012
comment
@Fahimahmed Sama-sama............ Tapi hanya permintaan.... cobalah memahami dan mengeksekusi cuplikan kode sebelum Anda mengambil kesimpulan tiba-tiba...itu telah membantu saya... dan saya yakin akan membantu setiap orang yang bereaksi terhadap situasi, daripada merespons...... terima kasih sekali lagi - person Kumar Vivek Mitra; 12.09.2012

SharedData.getInstance();

Mengembalikan null. Nanti Anda mencoba memanggil metode di dalamnya:

sharedData.setSrc_latitude(latitude);

Yang ilegal karena referensi ke objek masih null.

person Ivan Koblik    schedule 12.09.2012

Anda tidak membuat instance kelas, jadi getInstance() mengembalikan null.

Di awal kelas Anda, ganti :

private static SharedData instance = null;

by :

private static SharedData instance =  new SharedData() ; // creates a new instance
person Denys Séguret    schedule 12.09.2012
comment
sharedData.setSrc_latitude(lintang); - person Fahim Ahmed; 12.09.2012

ubah private static SharedData instance = null;

to private static SharedData instance = this;

dan jadikan kelas Anda statis

public static class SharedData {

Juga, buat getter setter statis..

person Vinay W    schedule 12.09.2012
comment
haha, benarkah? atau maksud Anda hanya 'jawaban buruk'? aku pikir juga begitu. saya belum pernah bekerja dengan c#, btw. - person Vinay W; 12.09.2012

Bahkan menggunakan singleton pattern Anda harus membuat instance objek SharedData setidaknya sekali.

coba ini

SharedData sharedData = new SharedData();  
       sharedData = SharedData.getInstance();
       sharedData.setSrc_latitude(latitude);
   sharedData.setEnd_longitude(longitude);
person Cristiano Fontes    schedule 12.09.2012