2016-05-31 273 views
-3

我目前正在Java FX中制作基本的TextEditor,但我遇到了一些困难。我试图在编辑器中使用MVC开发风格并在模型中使用任何类型的Document对象,但是当我尝试保存内容的区域时,当我尝试在文档中设置任何变量时,我得到一个NullPointException被初始化为空。它工作正常,它设置为一个新的文件将null参数虽然...为什么空对象会导致NullPointerException

任何信息的推理,这将非常感激!

编辑:

很抱歉的不确定性,我在初始化,我试图然后设置变量对象而言是意义。我有它初始化简单地空:

Document workingDocument = null 

当我把它改为:

Document workingDocument = new Document(null, null); 

我明白创建一个新文档,并在内存方面,但不是简单地把它初始化为空呢。 ..

+0

你能告诉我们一些代码吗? – Christoffer

+1

如果对象为null,并且您试图调用其上的方法,那么您希望发生什么? – alfasin

+0

当您尝试从null获取某些内容时,会引发NullPointerException。例如'null.someField','null.getSomething()'或'null [1]'。它发生是因为'null'没有任何字段,方法也不是数组。您不需要直接在'null'上执行这些操作。同样的事情会发生,如果你将以这种方式引用,其中像'String s = null; s.length();'。 – Pshemo

回答

0

您无法对空值进行操作。可用于空值(我的头顶部)的唯一操作是

  1. Nullchecks - if(document==null)
  2. Assignements - document=null

NullPointerException会被抛出,例如,如果你尝试调用某种方法对null值。

Document doc=new Document(); 
doc.toString(); // works just fine 
doc=null; 
doc.toString(); throws NPE. 

您应该熟悉OOP的概念,因为空值在这里被广泛使用。 您可以在这里查看相关主题What is a NullPointerException, and how do I fix it?

0

不是100%确定你的意思,但如果没有对象 - 你不能设置任何变量 - 因为它不存在。所以如果它被初始化为null,它就是空 - 即没有。

如果您已经实例化一个对象,您可以设置它的成员变量 - 即使其中的变量为空 - 因为该对象实际存在。

Null为空。所以即使一个变量是某种类型的,如果它被实例化,它也会指向null。

Shoe myShoe; // This is a shoe typ variable 
myShoe = new Shoe(); // Now it's pointing to a new shoe object 
myShoe = null; // Now it's pointing to null, meaning there is no shoe object there anymore. 
相关问题