站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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)



↑返回目录
前一篇: 用spring发送电子邮件的问题
后一篇: 读取xml,不知道怎么读取子节点