2010-11-28 75 views
64

包含需要包含一個外圍實例<我的參考>需要

下面是代碼的外圍實例。 positionObj是我嘗試使用的對象,它給了我上述錯誤。

現在還不清楚爲什麼。

package toolBox; 
import toolBox.Secretary.positionObj;  

public class PositionManagement { 
    public static HashMap<String, Secretary.positionObj> main(String vArg){ 
     positionObj newPosition=new positionObj(); 
    } 
} 

回答

96

您正嘗試使用非靜態的內部positionObj類,而不包含Secretary的實例。
非靜態內部類必須屬於其父類的一個實例

您應該將positionObj更改爲普通類或靜態內部類。

或者,您可以編寫someSecretary.new positionObj()來創建屬於someSecretary實例的內部類的實例。

0

正確的一般簽名會

public static HashMap<String, positionObj> main(String vArg) 
你不

需要限定positionObj因爲你已經導入。

但是,我很確定主要方法必須符合下面的簽名。如果您打算將主爲你的程序的主要方法,簽名更改爲

public static void main(String[] args) {...} 

您可以創建一個返回地圖一個單獨的靜態方法,並從主調用它。

作爲說明,所有類都應以大寫字母positionObj開頭,應爲PositionObj。

+0

嘿,遺漏了一些代碼。對此案達成一致。該班確實返回了一些東西,但是錯誤在這裏,我不清楚爲什麼。 – 2010-11-28 16:56:51

+0

@jason,我更新了我的回答 – hvgotcodes 2010-11-28 16:59:31

1

首先創建一個Outer類的對象。在這種情況下,我認爲「祕書」。然後創建positionObj。像這樣,

Secretary x = new Secretary(); 
Secretary.positionObj y = x.new positionObj();