一个timer,timertask的问题

woshilh 2008-03-06 01:32:26
刚学java,试用timer,timertask
import java.util.*;
import java.io.*;

public class doTask {
private java.util.Timer timer;
private java.util.TimerTask task;
public doTask(java.util.TimerTask task) {
this.timer = new Timer();
this.task = task;
}
public void start(int delay, int internal) {
timer.schedule(task, delay * 1000, internal * 1000);

public static void main(String[] args) {
java.util.TimerTask task1 = new myTask("Job 1");

doTask pt = new doTask(task1);
pt.start(1,3);

}

}




public class myTask extends java.util.TimerTask {
public String jobName;

public B[] tt;
private int i;
public void run() {

System.out.println(tt[0].a);//在这里出现nullpointerexception
tt[0].a=tt[0].a+1;
}

public myTask(String jobName) {
B[] tt=new B[2];//如果这两行放在run()中就没有异常,是什么原因,如何还解决
tt=new B(); //

}
}




class B {
public int a;
public int b;
public B(){
a=1;
b=2;

}
}
...全文
100 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
睿音 2008-03-06
  • 打赏
  • 举报
回复
我晕,lz你的代码在编译的时候不报错吗?帮你改了下。没有改变你的思路。自己对比下看看吧。
你的那个问题,可能就是因为你代码混乱产生的错误。


package test;

import java.util.*;
import java.io.*;

public class DoTask {

private static java.util.Timer timer;
private static MyTask task;

public DoTask() {
timer = new Timer();
}

public static void start(int delay, int internal) {
timer.schedule(task, delay * 1000, internal * 1000);
}

public static void main(String[] args) {

DoTask pt = new DoTask();

MyTask task = pt.new MyTask("Job 1");

start(1, 3);

}

public class MyTask extends java.util.TimerTask {
public String jobName;

public B[] tt;
private int i;

public MyTask(String jobName) {
this.jobName = jobName;
tt = new B[2];//如果这两行放在run()中就没有异常,是什么原因,如何还解决
//tt=new B(); //

}

public void run() {

System.out.println(tt[0].a);//在这里出现nullpointerexception
tt[0].a = tt[0].a + 1;
}
}

class B {
public int a;
public int b;

public B() {
a = 1;
b = 2;

}
}

}

hmsuccess 2008-03-06
  • 打赏
  • 举报
回复
tt=new B[2];是声明两个B类型数组对象,对其进行初始化,
tt[0].a=tt[0].a+1; 这就是一个null,就会产生空指针异常

向java2000_net 学习!!
老紫竹 2008-03-06
  • 打赏
  • 举报
回复
public B[] tt;
你没有给他初始化哦。
所以你再使用tt[0].a 出现了空指针

你再构造器里面的代码。就是在初始化!


62,623

社区成员

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

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