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
Null pointer exception on getter setter in java
提问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 pattern
you should instantiate the object SharedData
at 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 静态..