java java中getter setter的空指针异常

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12393399/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 08:43:49  来源:igfitidea点击:

Null pointer exception on getter setter in java

javaandroidgetter-setter

提问by Fahim Ahmed

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 :

我有一个名为 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;
}

}

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 .

有人可以帮我解决这个问题吗?谢谢 。

回答by Kumar Vivek Mitra

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

您从未初始化sharedData,因此它的值是null,调用它的方法会使您的程序崩溃。

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

我认为您正在尝试使用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;
}

回答by Ivan Koblik

SharedData.getInstance();

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

返回null。稍后您尝试对其调用方法:

sharedData.setSrc_latitude(latitude);

Which is illegal as reference to object is still null.

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

回答by Denys Séguret

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

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

At the start of your class, replace :

在课程开始时,替换:

private static SharedData instance = null;

by :

经过 :

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

回答by Cristiano Fontes

Even using the singleton patternyou should instantiate the object SharedDataat least once.

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

try this

试试这个

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

回答by Vinay W

change private static SharedData instance = null;

改变 private static SharedData instance = null;

to private static SharedData instance = this;

private static SharedData instance = this;

and make your class static

并使您的课程保持静态

public static class SharedData {

public static class SharedData {

Also , make the getters setters static..

另外,使 getter setter 静态..