Fahim Ahmed
Fahim Ahmed

Reputation: 779

Null pointer exception on getter setter in java

I have a getter setter class named SharedData.java . I am getting null pointer exception when I'm going to imply it on my code . Here is the SharedData class :

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;
}

}

Here is my code :

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

Can anybody please help me with this ? Thanks .

Upvotes: 4

Views: 19369

Answers (5)

Kumar Vivek Mitra
Kumar Vivek Mitra

Reputation: 33534

You never initialized sharedData, so its value is null, calling a method on it got your program to crash.

I think you're trying to use Singleton Pattern. Try the below:

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;
}

Upvotes: 6

Cristiano Fontes
Cristiano Fontes

Reputation: 5088

Even using the singleton pattern you should instantiate the object SharedData at least once.

try this

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

Upvotes: 1

Denys Séguret
Denys Séguret

Reputation: 382132

You don't instanciate the class, so getInstance() returns null.

At the start of your class, replace :

private static SharedData instance = null;

by :

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

Upvotes: 2

Vinay W
Vinay W

Reputation: 10190

change private static SharedData instance = null;

to private static SharedData instance = this;

and make your class static

public static class SharedData {

Also , make the getters setters static..

Upvotes: 1

Ivan Koblik
Ivan Koblik

Reputation: 4315

SharedData.getInstance();

Returns null. Later you're trying to call a method on it:

sharedData.setSrc_latitude(latitude);

Which is illegal as reference to object is still null.

Upvotes: 3

Related Questions