当前页面: 开发资料首页 → J2EE 专题 → 关于Timer中调用全局静态变量的疑惑
关于Timer中调用全局静态变量的疑惑
摘要: 关于Timer中调用全局静态变量的疑惑
当change类将全局静态变量设置成true时,为何timer中的isUpdate仍然为false
1.全局静态标记类
TestFlag.java
public class TestFlag{
public static boolean isUpdate=false;
}
2.有个Timer,5分钟执行一次
public class MyTimer{
...
run{
if(TestFlag.isUpdate==true){//执行了change后,为何isUpdate 还为false
执行更新操作...
}
}
...
}
3.public class change{
...
TestFlag.isUpdate=true;
...
}
public static boolean isUpdate=false;
用了static
1
public class TestFlag {
public static boolean isUpdate=false;
public static void setUpdate(boolean isUpdate) {
TestFlag.isUpdate = isUpdate;
}
}
3
public class change{
...
TestFlag.setUpdate(true);
...
}
public class TestFlag {
private boolean isUpdate = false;
public void setUpdate(boolean isUpdate) {
this.isUpdate = isUpdate;
}
}
3
public class change{
...
new TestFlag().setUpdate(true);
...
}
对,不能用static的
为什么不能static,不是这个问题啊,楼主可以把全部逻辑贴出来,
包括何时调用的change
sorry sorry
用static是没有问题的
可能是你的逻辑造成的
SDMRauquin(冷月无心)
-------
为什么不能static???
static 每次一个又一个值
why?
无情接分,友情up!
这问题是乎很简单,怎么没有人会?
一看就知道是java新手
怎么会有if(TestFlag.isUpdate==true) 这样的代码啊
用if(TestFlag.isUpdate) 就可以了
而且TestFlag.isUpdate 开始是false,
这样的话if(TestFlag.isUpdate==true){} 下面的操作是不会执行的.
不执行的话又怎么会调用到change中的方法呢,TestFlag.isUpdate的值又怎么会变为true 呢 .
你的if语句从来就没有执行过.
新手,鉴定完毕
我倒,楼主倒是看仔细点啊。
能用static的。
-------------------------------------------------------------------------
1.全局静态标记类
TestFlag.java
public class TestFlag{
public static boolean isUpdate=false; //这里的值为false
}
2.有个Timer,5分钟执行一次
public class MyTimer{
...
run{
if(TestFlag.isUpdate==true){//所以这里就不可能执行,因为isUpdate=false
执行更新操作...
}
所以说是
run{
if(TestFlag.isUpdate==true){//所以这里就不可能执行,因为isUpdate=false
执行更新操作...
}
的逻辑反了。改为if(!TestFlag.isUpdate)