Java - как получить доступ к ArrayList другого класса?

Привет я новичок в Java, и это мой вопрос: У меня есть этот первый класс со следующими переменными:

import java.util.ArrayList;

public class numbers {
    private int number1 = 50;
    private int number2 = 100;
}

и у меня тоже есть этот класс:

import java.util.ArrayList;

public class test {
    private numbers number;
}

мой вопрос здесь: я хочу сохранить переменные number1 & number2 в ArrayList, а затем получить доступ к этому ArrayList из теста класса. Как я могу это сделать?

5 ответов


import java.util.ArrayList;
public class numbers {
   private int number1 = 50;
   private int number2 = 100;
   private List<Integer> list;

   public numbers() {
       list = new ArrayList<Integer>();
       list.add(number1);
       list.add(number2);
   }

   public List<Integer> getList() {
       return list;
   }
}

и тестовый класс:

import java.util.ArrayList;
public class test {
   private numbers number;

   //example
   public test() {
     number = new numbers();
     List<Integer> list = number.getList();
     //hurray !
   }
}


вы можете сделать следующее:

  public class Numbers {
    private int number1 = 50;
    private int number2 = 100;
    private List<Integer> list;

    public Numbers() {
      list = new ArrayList<Integer>();
      list.add(number1);
      list.add(number2);
    }

    int getNumber(int pos)
    {
      return list.get(pos);
    }
  }

  public class Test {
    private Numbers numbers;

    public Test(){
      numbers = new Numbers();
      int number1 = numbers.getNumber(0);
      int number2 = numbers.getNumber(1);
    }
  }

вы можете сделать это, предоставив в классе numbers:

  • метод, который возвращает сам объект ArrayList.
  • метод, который возвращает немодифицируемую оболочку ArrayList. Это предотвращает изменение списка без знания номеров классов.
  • методы, которые предоставляют набор операций, которые вы хотите поддерживать из номеров классов. Это позволяет номерам классов управлять набором поддерживаемых операций.

By кстати, существует сильное соглашение,что имена классов Java прописные.

Случай 1 (простой геттер):

public class Numbers {
      private List<Integer> list;
      public List<Integer> getList() { return list; }
      ...
}

случай 2 (немодифицируемая обертка):

public class Numbers {
      private List<Integer> list;
      public List<Integer> getList() { return Collections.unmodifiableList( list ); }
      ...
}

Случай 3 (конкретные методы):

public class Numbers {
      private List<Integer> list;
      public void addToList( int i ) { list.add(i); }
      public int getValueAtIndex( int index ) { return list.get( index ); }
      ...
}

два варианта

1)экземпляр first class и геттер для arrayList

или

2) Сделать arraylist как static

и наконец

Основы Java От Oracle


поместите их в arrayList в свой первый класс, например:

import java.util.ArrayList;
public class numbers {
private int number1 = 50;
private int number2 = 100;

public ArrayList<int> getNumberList() {
ArrayList<int> numbersList= new ArrayList<int>();
numbersList.add(number1);
numberList.add(number2);
....
return numberList;

}
}

затем в вашем тестовом классе вы можете звонить по номерам.getNumberList (), чтобы получить ваш arrayList. Кроме того, вы можете создать такие методы, как addToList / removeFromList в своем классе numbers, чтобы вы могли обрабатывать его так, как вам нужно.

вы также можете получить доступ к переменной, объявленной в один класс от другого просто как

numbers.numberList;

Если вы объявили его там как публичный.

но на мой взгляд, это не такая хорошая практика, так как вам, вероятно, придется изменить этот список в своем коде позже. Обратите внимание, что вы должны добавить свой класс в список импорта.

Если вы можете сказать мне, каковы ваши требования к приложению, я смогу сказать вам более точно, что я думаю, что лучше всего сделать.