所以我有一个对象数组,我试图访问嵌套类中的变量。我得到一个空指针异常。新手在这里,所以我解决这个问题的方式可能是错误的。

foo Foo = new foo();
Foo.initcfoo(1);
Foo.cfoo[0].a = 1;


public class foo {
   childfoo[] cfoo;

   public void initcfoo(size){
      cfoo = new childfoo [size];
   }
   public class childfoo{
      public int a,b,c;
   }
}

最佳答案

您已初始化数组,但尚未初始化其成员。改成

   public void initcfoo(size){
       cfoo = new childfoo [size];
       for (int i = 0; i < cfoo.length; i++) {
           cfoo[i] = new childfoo();
       }
   }


考虑使用Java命名约定。类名以大写字母开头。将camelCase用作变量和方法名称。



如果您不这样做,则声明

Foo.cfoo[0].a = 1;


正在尝试访问索引为0的元素,但该元素尚未初始化,因此为null。试图取消引用null以便访问字段a会引发NullPointerException

关于java - 如何使用数组对象访问嵌套类中的变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18666910/

10-10 11:43