2013-06-19 81 views
0

有人能告訴我我在做什麼錯嗎?當我在Eclipse中使用此代碼時,它告訴我,當我嘗試在主方法中設置sheetName"hi"時,我無法「對非靜態字段進行靜態引用」。我在這裏做錯了什麼?我知道這一定很簡單,但我到處搜索,無法弄清楚!無法在main()方法中實例化字段(實例變量)。爲什麼?? Java

public class AutoExpire { 

private String sheetName; 
private FileInputStream inputStream; 

/** 
* Instantiates the class. 
*/ 
public AutoExpire() { 
    // do nothing 
} 

/** 
* The main method from which the program is ran. 
* 
* @param args 
*   No arguments. 
* @throws IOException 
*    If program fails to run. 
*/ 
public static void main(String[] args) throws IOException { 

    sheetName = "hi"; 
+0

'static'表示它是類的一部分,而不是類實例(對象本身)的一部分。非靜態字段如sheetName是類的實例的一部分。通常情況下,您可以使用具有字符串參數的構造函數創建該類,並從構造函數中分配字段。如果班級沒有'sheetName'可以生活,你也可以創建一個setter。但是無論你做什麼,你都應該在創建類實例期間或之後設置字段。 –

回答

3

main方法是靜態的,所以你必須在main方法沒有AutoExpire實例。創建一個實例,然後設置實例的字段。

public static void main(String[] args) throws IOException { 
    AutoExpire ae = new AutoExpire(); 
    ae.sheetName = "hi"; 
+0

非常感謝您的及時響應!你可以看看下面的評論,並可能在這個(你的)評論主題上回答它?再次感謝! –

相關問題