Доступ к содержимому массива и 3 класса

358
24 декабря 2016, 16:02

Всем привет.

Вопрос, как достучаться до массива?

У меня при обращении из класса A я получаю длину массива 0, хотя он заполняется на больше чем 100 элементов. Если вывести содержимое из класса С, пока он его заполняет, то он покажет все содержимое,

Class A {
   B b = new B();
   C c = new C();
   public static void main(){
      b.doSmth();
      System.out.print(c.getArrayList());
   }
}
Class B {
   C c=new C();
   c.setArrayList(String s);
}
Class C {
  private ArrayList list=new ArrayList();
  setArrayList(String s){
      list.add(s);
  }
  getArrayList(){
      return list.size();
  }
}
Answer 1

У вас создается два разных объекта класса C, поэтому массив пустой.

Ваш код должен выглядеть так:

public class A {
    B b;
    A(B b) {
        this.b = b;
    }
    public void method() {
        b.method();
    }
    public static void main(String[] args) throws Throwable {
       C c = new C();
       B b = new B(c);
       A a = new A(b);
       a.method();
       System.out.println(a.b.c.getArrayList());
    }   
}

class B {
    C c;
    public B(C c) {
        this.c = c;
    }
    void method() {
        c.setArrayList("hello");
    }
}

class C {
    private ArrayList list = new ArrayList();
    public void setArrayList(String s) {
        list.add(s);
    }
    public int getArrayList() {
        return list.size();
    }
}

Вообще не очень хорошая композиция классов, вам нужно лучше о ней подумать.

READ ALSO
Spring + xls и doc

Spring + xls и doc

Не получается загрузить файлы xls и doc(старый Office) файл загружается, но он пустой и выскакивает сообщение конфлик версийС xlsx и docx все нормально

313
android studio ошибка при запуске

android studio ошибка при запуске

Gradle 'MyApplication' project refresh failed Error:CreateProcess error=193, %1 не является приложением Win32

830
Добавление List-a в List как объекта

Добавление List-a в List как объекта

У меня есть сервис который получает Equipment по usernameИ в контроллере есть метод, который выводит во View Equipment у роли Manager и Users

363