如何在创建对象的方法之外访问对象数组



I 两个类,A 和 B。我在类 A 中有一个方法 demo(),它创建一个对象数组,通过使用以前的整数数组 1 来获取值"v3",我将创建 array1 长度的"array2"。因此,创建一个参数为 v1,v2,v3 的 array2 新对象。我也有一些 v1/2/3 的 B 类的 getter/setter。然后我想访问每个元素,例如

                   System.out.print(array2[0].getValue1()); 

在方法之外或至少知道它已成功创建,。但是通过尝试打印出一个值,我立即收到错误,所以我猜没有 toString 方法将是问题所在。我在方法外部创建了一个变量,如下所示:

         private B[] array2;

然后我主要打电话给:

  B array2 = new B[array1.length];
  demo();
  System.out.print(array2[0].getValue1());

这是方法

public void demo(){
      int v1= 2;
      int v2= 2;
      int v3= 0;
B[] array2 = new B[array1.length];
for(int x = 0; x<array2.length; x++)
{
     v3 = array1[x];


    array1[x] = new B(v1,v2,v3);
    array1[x].setValue2(v1);
    array1[x].setValue2(v2);
    array1[x].setValue3(v3);

    v1++;
}

}似乎我也必须重申

   B[] array2 = new B[array1.length];

在方法中或我收到错误。这似乎是一个类似的问题

基本上你创建了两个B[] array2变量,一个在demo()方法外面,另一个在里面。

由于您在 demo() 方法中创建了一个新的 B[] array2 变量,因此它不会更新之前在 demo() 方法之外创建的变量。

因为这个数组(B[] array2在外面创建的)自从创建以来就没有被修改过,所以当你尝试访问它里面的元素时,会抛出 NullpointerException。

修复:demo()方法中,不要再次创建新数组,而是引用在其外部创建的数组。所以在第 4 行demo()方法中,它应该是这样的。

array2 = new B[array1.length];

希望有帮助。

最新更新