从另一个类访问时不显示java ArrayList内容
我定义了ArrayList,并通过一个类向其中添加了少量数据
包含ArrayList定义的类
package practice;
import java.util.ArrayList;
class Prac {
static ArrayList<Integer> ar1=new ArrayList<Integer>();
public static void it(){
ar1.add(1);
ar1.add(2);
ar1.add(2);
ar1.add(2);
ar1.add(2);
ar1.add(2);
ar1.add(2);
ar1.add(2);
}
}
public class Exet{
public static void main(String args[]){
Prac.it();
}
}
然后我想通过迭代另一个类来查看存储在ArrayList中的数据我的第二个类如下
二等舱
package practice;
import practice.Prac;
import java.util.*;
public class StackOver {
public static void main(String args[]){
System.out.println(Prac.ar1.isEmpty());
Iterator<Integer> it=Prac.ar1.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
但是,当我执行第二节课时,它没有显示任何内容,所以我的问题是,我是否做了一些不符合原则的事情(那么原因是什么),或者是否有任何出路,一个详细的解释将帮助我提前理解它
# 1 楼答案
您正在执行第一类
public class Exet{
这是一个独立的程序它有自己的main
方法。一旦main
方法完成,与该程序相关的所有数据都将从内存中删除然后执行第二个类,它有自己的
main
方法,与第一个类执行所做的任何事情都无关,因为它们是您正在执行的两个不同的程序通过中的
main()
方法,可以在项目中拥有任意多的类。但是,Java虚拟机一次只能运行其中一个,作为程序的入口点# 2 楼答案
在第一个程序中,您调用了填充arraylist的方法。在第二个程序中,你从未调用过它
如果希望其他类可以使用静态块,请在第一个程序中添加一个静态块,并在该静态块中填充arraylist,或者可以从第一个程序的静态块调用“it()”方法
加载第一个类时,将运行静态块并初始化arraylist
将第一个程序更改为以下内容:
更改arraylist的范围,使其可供其他类使用,并在静态块中初始化arraylist,如图所示
一个更简单的解决方案是调用在第一个程序的静态块中初始化arraylist的方法,如下所示:
您可以在其他类中访问arraylist,如下所示:
# 3 楼答案
以上代码将是您的主要方法
试试上面的代码。希望有帮助