2012-04-28 88 views
-2

在您閱讀我的問題,知道我不好英語詮釋到靜態

public Name() 
{ 
    ID = 1; 
    loadOptions(); 
} 

private void loadOptions 
{ 
    // code 
    if (as[0].equals("ID")) 
    { 
     ID = Integer.parseInt(as[1]); 
    } 
    // more code 
} 

static 
{ 
    ID1 = ID; 
} 

ID1是0,但我想,這是Integer.parseInt(as[1]); ...請幫幫我!

+2

通過重寫您的問題來幫助我們。 – nullpotent 2012-04-28 14:19:34

+2

通過在您的問題中添加相關語言標籤來幫助我們。 – 2012-04-28 14:20:04

+0

你能分享更多的代碼嗎?你是否想要在靜態塊中將ID1 = value作爲[1]? – mprabhat 2012-04-28 14:21:12

回答

0

有兩種方法來實現這一目標:

  1. 一旦你解析爲[1],還分配結果ID1
  2. 充分利用作爲陣列靜態和初始化ID1
之前加載它
+0

「使數組靜態,並在初始化ID1之前加載它」您能舉個例子嗎? – Vision 2012-04-28 14:33:25

+0

static String as [] = new String [] {「ID」,「42」}; – Ingo 2012-04-28 21:03:32

0

我認爲你可能缺乏這門語言的一些基礎知識。

靜態初始化塊只在第一次引用類時運行。

每次您實例化類的實例時都會運行構造函數。

我假設ID1是一個靜態變量,並且您正試圖在構造函數有機會執行之前運行的靜態區域中初始化它。

僅僅因爲代碼是按特定順序編寫的,並不表示它按該順序運行。

假設你真的想ID1設置爲任何ID是,你必須要做到這一點

public Name() 
{ 
    ID = 1; 
    loadOptions(); 
    ID1 = ID; 
} 

當然,這不構建名稱的實例,ID1將保持0,直到創建一個實例

+0

不,這不是我想要的... – Vision 2012-04-28 14:37:13