2013-03-14 3 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

+0

Вы уверены, что используете getInputs()? Что вы называете getInputs() и draw() в одном экземпляре? Потому что это должно быть «настойчивым». –

+1

"* и это 0. Всегда. *" => Кажется, что 'draw' вызывается перед' getInputs' тогда ... Только другая возможность заключается в том, что у вас есть два разных потока, выполняющих 'draw' и' getInputs'. – assylias

ответ

1

Несколько предложений:

  1. Используйте отладчик.

  2. Вход num в getInputs

  3. Войдите System.identityHashCode(fInputs) в getInputs и в draw и убедитесь, что они одинаковы.

+0

хорошо. Я узнал, что я работаю с двумя разными объектами содержащего класса - я попытаюсь разрешить это и, возможно, позже поговорю с вами, ребята. Большое спасибо! –

+0

И это на самом деле была единственной проблемой. Решено! –

+0

Если это решило вашу проблему, вы должны принять ответ. –

Смежные вопросы