2011-02-07 23 views
2

我的程序抛出NullPointerException的实例方法。我怀疑Calling the instance method of a null object是它抛出一个空指针异常的原因。这是什么意思调用空对象“

谁能解释一下,这实际上意味着什么呢?

+0

当你试图在调试器中捕获这个时,你看到了什么? – 2011-02-07 11:05:26

回答

1

Java中有两种类型的方法:静态和实例。一个静态方法可以在没有该类的实例的情况下被调用,一个实例方法必须被调用到该类的一个实例上。静态方法不能调用实例方法或使用实例数据,但反过来不成立实例方法可以调用静态方法并使用静态数据。

您看到的空指针异常(NPE)是因为您正在调用空引用上的实例方法。您需要将引用设置为该类的实际对象(或其子类)。

但有趣的是,在空引用上调用静态方法是合法的。这是非常奇怪的语法和有点误导,但它会起作用。

12

这意味着你有一些代码看起来是这样的:

foo.method(); 

...和foonullfoo必须参考的对象实例的邻。你可以调用方法或访问它的字段。例如,你必须指定foonull以外的东西),如foo = new Foo();等。

+0

+1 short and sweet – Nishant 2011-02-07 11:05:47

0

您对未初始化的对象调用方法。对于为例你的代码中有一行例如:

myObject.callMethod(); 

但这种“myObject的”尚未有这样一行初始化:

myObject = new myObjectClass(); 

如果你想更多的上下文请张贴一些代码回答!