public class MapPoint {
public MapPoint() {
this.tag = new String() ;
this.Id = 0 ;
}
public long Id;
public double lon;
public double lat;
public String tag;
}
但是当我想在我的主函数中创建一个MapPoint数组时:
public class mainTestClass {
public static void main(String[] args){
MapPoint[] mapPoints = new MapPoint[100];
mapPoints[0].setId(2);
System.out.println(mapPoints[0].Id);
}
}
我有这个提示“只读取数组,从不写入”
当我运行程序时出现此错误: 线程“main”java.lang.NullPointerException中的异常 在mainTestClass.main(mainTestClass.java:34)。
请帮助
感谢。
答案 0 :(得分:7)
您刚刚声明了一个最多可包含100个MapPoint对象的数组。现在,您需要在数组中创建一个对象。
mapPoints[0] = new MapPoint();
mapPoints[0].setId(2);
当您执行MapPoint[] mapPoints = new MapPoint[10];
时,就像这种情况一样:
这就是为什么你得到NullPointerException
。
答案 1 :(得分:2)
创建数组时:
MapPoint[] mapPoints = new MapPoint[100];
你没有创建一个包含100个mappoints的数组。
您正在创建一个数组,该数组有空间可容纳100个地图点参考。
所以你需要自己创建一个MapPoint,并把它放在数组中。
答案 2 :(得分:1)
那是因为你必须先对变量进行初始化。
mapPoints[0] = new MapPoint().setId(2);