2016-05-31 269 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. 
相關問題