2016-03-21 93 views
0

我非常肯定我之前完成了這個工作,所以我不確定它爲什麼會導致錯誤。這是錯誤我得到:Java - 在方法調用中創建一個對象

$ javac Zombie.java 
Zombie.java:51: error: non-static variable this cannot be referenced from a static context 
      array.add(new Point(p.d0-1, p.d1)); 
        ^

它的指向,我定義了一個新的對象,所以我不能讓一個方法調用時,在靜態環境中做到這一點?我是否需要定義一個變量並將其傳入?因爲會需要更多的時間和更加雜亂....

對於適當的上下文:

  • 陣列的類型是ArrayList
  • 點是我所定義的類。構造函數調用正確。
  • p是Point的一個實例。它有兩個字段:d0和d1(維度0和維度1,以減輕與X和Y的混淆)。
+2

是'Point'嵌套類嗎?如果是這樣,請在其聲明中添加「static」字樣。 –

+0

我懷疑這裏有更多的代碼行,我們在這裏看到。 *通常*沒有理由不能聲明對象的實例。 – David

+0

在此處發佈您的代碼 – Ramanlfc

回答

0

如果在非嵌套類的靜態上下文中使用嵌套類,則需要聲明嵌套類爲public和static。我這樣做了,不再有這個錯誤。

+2

您應該花時間瞭解非靜態內部類需要其封閉類型的實例。這是因爲內部類對隱含類型的實例字段和方法具有隱式訪問權限。靜態內部類不能隱式地訪問這些實例字段和成員,因此不需要實例。 –

相關問題