刚学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;
}
}
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;
}
}
你没有给他初始化哦。
所以你再使用tt[0].a 出现了空指针你再构造器里面的代码。就是在初始化!
你的那个问题,可能就是因为你代码混乱产生的错误。
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; }
}}
tt[0].a=tt[0].a+1; 这就是一个null,就会产生空指针异常向java2000_net 学习!!