【发布时间】:2013-04-30 01:53:07
【问题描述】:
我正在尝试创建由子类定义的对象数组(我认为这是正确的术语)。我可以看到问题反复出现,但实施仍然存在问题。
我的代码
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 最终会包含更多数据。)
我很确定这个问题被问到here 并且得到了很好的回答。我想我实现了解决方案:
MyClass[] foo = new MyClass[10];
foo[0] = new MyClass();
foo[0].bar = 0;
但是上面的第二行出现了错误
没有可访问类型为 Test 的封闭实例。
我确实理解 ArrayList 将是一个前进的方向,但我正在努力掌握基本概念。
注意 - 知道 Java 是我第一次涉足面向对象编程时,虽然总体上对编程非常熟悉,但这可能会很有用。
【问题讨论】:
-
关于 nested classes 的 Java 教程章节可能是一本关于内部类基础知识的有趣读物。