Java 是否从不同类复制静态arraylist的内容?
是否可以从其他类获取静态arraylist的副本。我试图从另一个类访问arraylist,但总是返回一个空的类。我假设我们可以直接访问静态变量 基本上,我想在arraylist中添加一些内容之后获取它的副本。我该怎么做Java 是否从不同类复制静态arraylist的内容?,java,arraylist,Java,Arraylist,是否可以从其他类获取静态arraylist的副本。我试图从另一个类访问arraylist,但总是返回一个空的类。我假设我们可以直接访问静态变量 基本上,我想在arraylist中添加一些内容之后获取它的副本。我该怎么做 import java.util.ArrayList; public class two { public static void main(String[] args) { // TODO Auto-g
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) {
}
}
}
您正在初始化main方法中的ArrayList,并希望在第二个类中使用该ArrayList,但当您从该类调用main方法时,将初始化第一个类中的ArrayList,然后无法在第二个类中使用它。如果要在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);
}
}
}
在类2中的对象浅层复制正在发生,所以当您在静态arraylist中进行任何更改时,它将自动显示在类2中的列表中 您可以直接访问任何类的静态组件
在您的示例中,静态临时数组列表为空。它未设置为填充任何数据
调用one.getTemp时,它返回数组列表的默认静态实例。在方法中,您应该检查它是否已填充。如果是空的,您应该将其填充并返回
方法很多,但这是其中之一。您尝试调用哪个主方法?我将首先运行一个,然后尝试将arraylist从一个变成两个…Java程序将只运行一个主方法。所以你要么把一些东西放进ArrayList,要么得到ArrayList。基本上,我想在ArrayList中添加一些东西之后得到它的副本。我怎么做?你想把这个复制到哪里?复制到2的arraylist中。如果我一直调用getter方法,我希望一个列表中的任何更改都应该在两个列表中可见。。。
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]