我对Java并不熟悉,所以这可能是个愚蠢的问题。假设我创建了一个名为SomeObject的类,其中包含一些参数的简单getter和setter。接下来,我想创建一个由该对象的3个实例组成的数组。有谁能告诉我:
SomeObject[] objectArray = {new SomeObject(),new SomeObject(),new SomeObject()};
objectArray[0].setValue(10);以及:
SomeObject[] objectArray = new SomeObject[3];
objectArray[0].setValue(10);在第一种情况下,我完全可以得到对象的值。
System.out.println(objectArray[0].getValue());..while,后者在尝试设置值时给出一个NullPointerException。我是错过了什么,还是我犯了另一种错误?
发布于 2013-08-09 15:59:49
当您创建一个对象数组时,实际上需要两个步骤
第一种方法同时执行两种方法,而第二种方法只执行第一步,因此对实际对象的引用是null。
Object[] objects = {new Object(),new Object(),new Object()};在这里,{...}创建数组,内部new创建对象。
Object[] objects = new Object[3];在这里,new创建了大小为3的数组,但是没有创建单个元素,比如object[0],因此引用是null,这将导致异常。
发布于 2013-08-09 15:59:50
第一行代码创建三个Object来填充数组。
您的第二行代码创建了一个空数组,并且从不填充它,所以它仍然充满了null。
发布于 2013-08-09 15:59:50
第二个版本,Object[] objects = new Object[3];,创建一个大小为3的数组,但是对象不存在,它们是空的。
首先,Object[] objects = {new Object(),new Object(),new Object()};在创建数组的同时显式地创建对象,因此您可以访问它们。
https://stackoverflow.com/questions/18150900
复制相似问题