Можно ли получить копию статического arraylist из другого класса. Я пытаюсь получить доступ к arraylist из другого класса и всегда получаю пустой. Я был в предположении, что мы можем напрямую обращаться к статическим переменным...
В основном я хочу получить копию архариста после того, как что-то было добавлено к нему. Как я могу это сделать?
import java.util.ArrayList;
public class two {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Integer> two = one.getTemp();
for (int i = 0; i < two.size(); i++) {
System.out.println(two.get(i));
}
}
}
import java.util.ArrayList;
public class one {
public static ArrayList<Integer> temp = new ArrayList<Integer>();
public static ArrayList<Integer> getTemp() {
return temp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 0; i < 10; i++) {
temp.add(i * 10);
}
for (int i = 0; i < 10; i++) {
System.out.println(temp.get(i));
}
while (true) {
}
}
}
Вы инициализируете ArrayList в основном методе и хотите использовать этот arraylist во втором классе, но ArrayList из Class One будет инициализироваться при вызове основного метода из этого, а затем вы не сможете использовать его во втором классе. Сделать static
блок, если вы хотите инициализировать это во время вызова метода get
import java.util.ArrayList;
public class Two {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(One.temp);
ArrayList<Integer> copy=One.temp;
One.temp.add(100);
System.out.println(copy);
}
}
class One{
public static ArrayList<Integer> temp = new ArrayList<Integer>();
public static ArrayList<Integer> getTemp() {
return temp;
}
static {
// TODO Auto-generated method stub
for (int i = 0; i < 10; i++) {
temp.add(i * 10);
}
}
}
Вывод:
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
В классе два объекта мелкой копии происходит, поэтому, когда вы вносите какие-либо изменения в статический arraylist, он будет автоматически отображаться в списке класса 2.
Вы можете напрямую обращаться к static
компонентам любого класса.
В вашем примере список статических temp
массивов пуст. Он не был заполнен никакими данными.
Когда call one.getTemp()
возвращает статический экземпляр по умолчанию списка массивов. В методе вы должны проверить, заполнен ли он. Если пусто, вы должны заполнить его и вернуться.
Способов много, но это один из них.
main
метод вы пытаетесь вызвать ??