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 из теста класса. Как я могу это сделать?
Ответы
Ответ 1
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 !
}
}
Ответ 2
Вы можете сделать это, предоставив в классе numbers
:
- Метод, который возвращает объект ArrayList.
- Метод, который возвращает немодифицируемую оболочку ArrayList. Это предотвращает внесение изменений в список без знания номеров классов.
- Способы, которые предоставляют набор операций, которые вы хотите поддерживать из номеров классов. Это позволяет номерам классов управлять набором поддерживаемых операций.
Кстати, существует сильное соглашение о том, что имена классов Java в верхнем регистре.
Случай 1 (простой getter):
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 ); }
...
}
Ответ 3
Вы можете сделать следующее:
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);
}
}
Ответ 4
Два способа
1) введите first class
и getter для arrayList
или
2) Сделайте arraylist как static
И наконец
Основы Java по Oracle
Ответ 5
Поместите их в массивList в свой первый класс, например:
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;
}
}
Затем в вашем тестовом классе вы можете вызвать numbers.getNumberList(), чтобы получить свой список массивов. Кроме того, вы можете создать такие методы, как addToList/removeFromList, в своем классе чисел, чтобы вы могли обрабатывать его так, как вам нужно.
Вы также можете получить доступ к переменной, объявленной в одном классе, другой, просто как
numbers.numberList;
если вы объявили его публичным.
Но это не такая хорошая практика, на мой взгляд, так как вам, вероятно, придется позже изменить этот список в своем коде. Обратите внимание, что вы должны добавить свой класс в список импорта.
Если вы можете сказать мне, что ваши требования к приложениям, я смогу рассказать вам более точно, что я думаю, что это лучше всего сделать.