我正在尝试创建一个由子类定义的对象数组(我认为这是正确的术语)。我可以看到这个问题反复出现,但实施仍然存在问题。
我的代码
public class Test {
private class MyClass {
int bar = -1;
}
private static MyClass[] foo;
public static void main(String args[]) {
foo = new MyClass[1];
foo[0].bar = 0;
}
}
给出错误
线程“主”java.lang.NullPointerException 中的异常。
为了使其合理化,我将其分解为最简单的术语:
public class Test {
private static int[] foo;
public static void main(String args[]) {
foo = new int[1];
foo[0] = 0;
}
}
这似乎有效。我只是看不出我的两个例子之间的区别。(我知道我的第一个毫无意义,但 MyClass 最终将包含更多数据。)
我很确定这个问题在这里被问到并且得到了很好的回答。我想我实施了解决方案:
MyClass[] foo = new MyClass[10];
foo[0] = new MyClass();
foo[0].bar = 0;
但上面的第二行发出错误
没有可访问类型 Test 的封闭实例。
我确实理解 ArrayList 将是一种前进的方式,但我正在努力掌握基本概念。
NB - 知道虽然总体上对编程非常熟悉,但 Java 是我第一次涉足面向对象编程,这可能很有用。