Java中Example数组赋值触发NullPointerException的原因及解决咨询
问题原因与解决方案
你忽略了Java引用类型数组的关键特性:创建数组时仅分配了存储对象引用的容器,数组内每个元素默认都是null,并未实际创建Example对象实例。
执行Example FromTo[] = new Example[25];时,只是生成了一个可容纳25个Example对象引用的数组,但数组里的每一个位置都没有指向具体的Example对象。此时直接访问FromTo[0].xEnd,本质是尝试对null对象的字段进行操作,必然触发NullPointerException。
解决方法
在访问数组元素的字段前,必须先为目标数组元素创建Example对象实例:
方式1:批量初始化所有元素
Example FromTo[] = new Example[25]; // 遍历数组,为每个位置创建Example实例 for (int i = 0; i < FromTo.length; i++) { FromTo[i] = new Example(); } // 现在可正常赋值 FromTo[0].xEnd = 120;
方式2:按需初始化单个元素
若仅需使用数组中的部分元素,可单独初始化特定位置:
Example FromTo[] = new Example[25]; // 先初始化第0个元素 FromTo[0] = new Example(); // 再执行赋值操作 FromTo[0].xEnd = 120;
完成初始化后,就能正常进行字段赋值与引用操作,避免空指针异常。
内容的提问来源于stack exchange,提问作者Walter Swietlik
相关产品推荐
相关产品推荐

