调用静态方法得到的值始终为0

majielijun 2009-12-24 02:40:12
在cominfo中定义了若干静态变量静态方法如:
package com;
public class comInfo
{
static int deadlineTime=0;
public static void setDeadlineTime(int num)
{
deadlineTime=num;
}
public static int getDeadlineTime()
{
return deadlineTime;
}
}
}

在buyer中调用可以成功
public class buyer extends JFrame implements ActionListener
{
public buyer(int buyerport)
{
this.deadlineTime=com.comInfo.getDeadlineTime();
}

public void actionPerformed(ActionEvent e)
{
else if(e.getSource()==timer)
{
deadlineTime--;
if(deadlineTime>=0)
{
txtDeadlineTime.setText(""+deadlineTime);
}
else
{
timer.stop();
btnbid.setEnabled(false);
}
}
}

}
上面的操作能成功,但在另外一类df中操作却不能成功

public class df extends JFrame implements ActionListener
{
int deadlintTime;
Timer timer;
ServerSocket serverSocket;
Socket sock;
DataOutputStream out;
DataInputStream in;
oneRequest[] rq;

public df(int deadlineTime)
{
rq=new oneRequest[10];
this.deadlintTime=deadlineTime;
}
public void service()
{
while(true)
{
try
{
//接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接
sock=serverSocket.accept();
executorService.execute(new Handler(sock,this));

} catch (Exception e)
{
e.printStackTrace();
break;
}
}
}
public void actionPerformed(ActionEvent e)
{
else if(e.getSource()==timer)
{

if(deadlintTime>0)
{
deadlintTime=deadlintTime-1;
this.txtDeadlineTime.setText(""+deadlintTime);
com.comInfo.setDeadlineTime(deadlintTime);
}
else
{
timer.stop();
}
}
}
public static void main(String args[])
{
new df(com.comInfo.getDeadlineTime()).service();
}
}
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjdreamer 2009-12-24
  • 打赏
  • 举报
回复
从你给出的df的代码中看出,一直得到0是肯定的,因为你的代码就是这样写的,如果得到的不是0,大家才会惊讶。

至于你的buyer,代码不完整,不知你怎么实现的,希望具体描述一下你的成功和不成功分别是什么意思
ouyangyh 2009-12-24
  • 打赏
  • 举报
回复
if(deadlintTime>0)
{
deadlintTime=deadlintTime-1;
this.txtDeadlineTime.setText(""+deadlintTime);
com.comInfo.setDeadlineTime(deadlintTime);
}

我从你的代码里找不到 deadlintTime会有大于0的情况
xllee 2009-12-24
  • 打赏
  • 举报
回复
这位大哥,你的代码贴的很混乱,能不能该有的都贴上啊,我都改的不行了,怕影响你源代码的结构,麻烦来一个全的.
majielijun 2009-12-24
  • 打赏
  • 举报
回复
可以,因为我CALL之后,在buyer中调用得到的是最新的值,但在df中调用就不行
swandragon 2009-12-24
  • 打赏
  • 举报
回复
可能com.comInfo.setDeadlineTime(deadlintTime);没有被调用
或者被调用了之后没有用com.comInfo.getDeadlineTime()再次取值

public static void setDeadlineTime(int num)
{
deadlineTime=num;
System.out.println(" setDeadlineTime :"+deadlineTime);
}
public static int getDeadlineTime()
{
return deadlineTime;
System.out.println(" getDeadlineTime :"+deadlineTime);
}


healer_kx 2009-12-24
  • 打赏
  • 举报
回复
你如何确定这个函数一定被call了?
public static void setDeadlineTime(int num)
{
deadlineTime=num;
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧