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
и наконец
поместите их в 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;
Если вы объявили его там как публичный.
но на мой взгляд, это не такая хорошая практика, так как вам, вероятно, придется изменить этот список в своем коде позже. Обратите внимание, что вы должны добавить свой класс в список импорта.
Если вы можете сказать мне, каковы ваши требования к приложению, я смогу сказать вам более точно, что я думаю, что лучше всего сделать.