2013-03-14 119 views
0

我正在研究一個類,它是後端類視圖,需要顯示一些後端類屬性。在ArrayList中保留項目

public abstract class AGenericNodeView{ 
    private ANode fObject; 
    private ArrayList<TInputView> fInputs = null; 

    public AGenericNodeView(){ 
     super(); 
     this.fInputs = new ArrayList<TInputView>(); 
    } 


    private void getInputs(){ 
     int num = fObject.getNumInputs(); //Number of inputs 
     for (int i = 0; i < num; i++) 
     { 
      this.fInputs.add(new TInputView()); 
      this.fInputs.get(i).doSth(); 
     } 
     //fInputs has now the size num which is greater than 0. 
    }  

    //later I call: 
    public draw() 
    { 
     //... 
     log(this.fInputs.size()); //output fInputs.size() 
     // and it is 0. Always. 
    } 


} 

我想,如果有一種方法,讓我創建的對象在getInputs()執着,所以該列表不是空的,需要draw()什麼時候?

+0

在您使用它的地方添加相關的代碼。 – BobTheBuilder 2013-03-14 13:40:08

+0

您確定要調用getInputs()嗎?你在同一個實例上調用getInputs()和draw()?因爲它應該是「持久的」。 – 2013-03-14 13:40:10

+1

「*,它是0. Always。*」=>看起來'draw'在'getInputs'之前被調用,那麼......只有其他的可能性是如果你有兩個不同的線程執行'draw'和'getInputs'。 – assylias 2013-03-14 13:40:21

回答

1

一對夫婦的建議:

  1. 使用調試器。

  2. 登錄numgetInputs

  3. 登錄System.identityHashCode(fInputs)getInputsdraw並驗證它們是相同的。

+0

好。我發現,我正在處理包含類的兩個不同的對象 - 我會盡力解決這個問題,也許稍後再提及你們。萬分感謝! – 2013-03-14 14:08:36

+0

而這實際上是唯一的問題。解決! – 2013-03-14 14:18:36

+0

如果這解決了你的問題,你應該接受答案。 – 2013-03-15 13:55:35