【发布时间】:2010-04-30 19:34:58
【问题描述】:
我得到一个 NullPointerException 在子类内部类构造函数中调用超类方法...这是怎么回事?
在我的应用程序的主类(Application 的子类)中,我有一个公共内部类,它只包含 3 个公共字符串对象。在父类中,我声明了该内部类的一个对象。
public class MainApplication extends Application {
public class Data {
public String x;
public String y;
public String z;
}
private Data data;
MainApplication() {
data = new Data()
data.x = SuperClassMethod();
}
}
在构造函数中实例化对象后,当我尝试使用超类方法在内部类中分配值时出现运行时错误。
知道这里有什么吗?子类构造函数中不能调用超类方法吗?
** 编辑 ** 原始问题是关于外部类构造函数中的内部类成员分配。原来问题在于在类的构造函数中调用超类方法。它给了我一个空指针异常。因此,问题发生了变化。
【问题讨论】:
-
我的代码是我实际代码的粗略伪版本。分号不是问题。我没有编译错误。当我运行应用程序时,我会弹出一个 android 对话框,说“应用程序已意外停止。请重试。”在进一步调试时,我发现我正在做的一项任务是使用父类的方法并抛出 NullPointerException。不知道为什么在子类的构造函数中隐式调用超类构造函数时,对吧?
-
这很奇怪,因为之前我使用超类方法注释掉该行时,它仍然崩溃。现在,当我只是将常量字符串分配给内部类成员时,这很好。奇数...
-
如果超类构造函数有Npe,则必须先修复。让我们看看堆栈跟踪,我们可以知道它的全部内容。
-
不幸的是(幸运的是)我已经解决了这个问题;我只是在新方法而不是构造函数中加载数据。回滚代码以获取堆栈跟踪的工作量太大。但是,“您必须先修复”是什么意思?
-
原来我的提示是对的。
标签: java android constructor