调用GeoPoint的setLatitude方法触发NullPointerException异常求助
问题根因
你抛出的空指针异常核心原因是:pointTarget 仅完成了类型声明,未完成实例化,调用空对象的成员方法必然触发该异常。
Java语言中,引用类型的成员变量如果只声明不赋值,默认初始值为null,你代码里只写了GeoPoint pointTarget;,没有执行new操作创建实际的GeoPoint实例,所以调用setLatitude方法时操作的是空对象,和你传入的double参数没有任何关联。
修复方案
两种可选修复方式:
- 方式一:在声明变量时直接实例化,后续按需修改经纬度
public class MainActivity extends AppCompatActivity implements LocationListener { // 声明同时完成实例化 GeoPoint pointTarget = new GeoPoint(); @Override public void onCreate(@Nullable Bundle savedInstanceState) { pointTarget.setLatitude(51.4245); pointTarget.setLongitude(3.1455); } }
- 方式二:使用带参构造方法直接传入经纬度初始化,无需单独调用set方法,代码更简洁
public class MainActivity extends AppCompatActivity implements LocationListener { GeoPoint pointTarget; @Override public void onCreate(@Nullable Bundle savedInstanceState) { // 先实例化再使用 pointTarget = new GeoPoint(51.4245, 3.1455); } }
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

