public class A{
public static ArrayList<String> list = new ArrayList();
public static void main(String[] args){
list.add("abc");
}
}
public class B{
public static ArrayList f(){
ArrayList<String> list_b = A.list;
System.out.println(list_b);
}
}
为什么打印出来的list_b是空的?
在A类的主方法中打印一段字符试试,不清楚类的初始化会不会调用类的主方法。
试了一下好像不会初始化Main方法,主动在B类里调用A的main方法,才会有结果。
public class ClassA {
public static ArrayList<String> list = new ArrayList();
static{
list.add("abc");
System.out.println("A初始化了");
}
public static void main(String[] args){
list.add("abc");
System.out.println("A初始化了");
}
}
public class ClassB {
public static void f(){
ArrayList<String> list_b = ClassA.list;
System.out.println(list_b);
}
public static void main(String[] args) {
/*ClassA a=new ClassA();
System.out.println(ClassA.list);
结果:
A初始化了
[abc]*/
ClassB.f();//结果 A初始化了
//[abc]
}
}
在A的main函数中加个打印,看看有没有执行,没执行的话肯定是空的。如有帮助,请采纳一下,谢谢。
恕我眼拙,你这想把list_b打印出什么?main方法是在A类中,B中的又不是main方法,System.out.println(list_b); 这个方法应该是根本没有调用的。main是一个关键字,不是静态方法都能直接执行的。
如果觉得回答还可以,可采纳!