[英]Null pointer exception using array of object
我有以下代码:
private class Record {
float val;
byte year;
}
....
Record[] record=new Record[100];
record[0].year=(byte)12;
我在最后一行得到了例外。 谢谢!
默认情况下,对象数组用null
s填充,所以你正在做什么
record[0].year=(byte)12;
实际上是
null.year=(byte)12;
但是null
没有它的类,所以它没有year
字段。 要解决这个问题,您需要先使用Record
类的新对象填充数组
Record[] record = new Record[100];
for (int i = 0; i < record.length; i++)
record[i] = new Record();
//now you can safely use
record[0].year = (byte)12;
我只是注意到Record
是private
类,这意味着它是内部类。 虽然您将能够通过new Record()
在非静态方法中创建其实例,以便在static
方法中创建它,但您将需要其外部类的第一个实例。 在这种情况下,您的代码可能看起来像
OuterClass myOuterClassInstance = new OuterClass();
Record[] record = new Record[100];
for (int i = 0; i < record.length; i++)
record[i] = myOuterClassInstance.new Record();
//now you can safely use
record[0].year = (byte)12;
您需要首先初始化记录[0]。
Record[] record=new Record[100];
record[0] = new Record();
record[0].year=(byte)12;
这与C / C ++不同。 在Java中,对象数组的每个元素都需要初始化。
您应该将Record
s添加到数组中
Record[] record=new Record[100];
for (int i = 0; i < record.length; i++){
record[i] = new Record(val, year);
}
这是考虑你有一个构造函数Record(float val, byte year);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.