关于java静态变量取值的问题。

我在AAA类中声明了一个静态变量,并在一个方法中给静态变量赋值,main方法中计时器持续调用这个方法。启动AAA类后,在BBB类中我要获取AAA类中的这个静态变量,但得到的是null。我应该怎么取得这个静态变量。
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

public class AAA {
public static ArrayList<String> strs;

public void test(){
strs=new ArrayList<String>();
strs.add("a");
strs.add("b");
}
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask (){
@Override
public void run() {
new AAA().test();
System.out.println("qqqq~~"+strs.size());
}
};
timer.schedule (task,0L, 3000L);

}
}

import java.util.ArrayList;
public class BBB {

public ArrayList<String> ds(){
return AAA.strs;
}

public static void main(String[] args) {

System.out.println(new BBB().ds());
}
}

把AAA类的main方法放到BBB类的main法中。你两个main方法相当于启动两个程序,两个程序之间不共享内存,BBB类的main方法启动时不会调用AAA的test方法,也就没有初始化静态变量,所以一直是null
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-31
直接给值给str变量
package test1;

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

public class AAA {
public static ArrayList<String> strs = test();

public static ArrayList<String> test(){
strs=new ArrayList<String>();
strs.add("a");
strs.add("b");
return strs;
}

public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask (){
@Override
public void run() {
new AAA().test();
System.out.println("qqqq~~"+strs.size());
}
};
timer.schedule (task,0L, 3000L);

}
}
package test1;

import java.util.ArrayList;

public class BBB {
public static void main(String args[]){
System.out.println(new BBB().ds());
}

public ArrayList<String> ds(){
return AAA.strs;
}
}本回答被提问者采纳
第2个回答  2015-03-31
你两个main方法是获取不到的,写在一个里,两个main相当于两个入口,进到的也不是同一块地方
相似回答