帮我看下这个java程序为什么错了

来源:百度知道 编辑:UC知道 时间:2024/05/14 18:58:15
package timeAndtimeTask;
import java.util.*;
public class TimerTask {
public static void main(String[] args) {
// TODO 自动生成方法存根

class MyTimerTask extends TimerTask
{
private Timer t = null;
public MyTimerTask(Timer t)
{
this.t=t;
}
public void run()
{
try
{
Runtime.getRuntime().exec("calc.exe");
}
catch(Exception e)
{
e.printStackTrace();
}
t.cancel();
}
}
//结束任务线程的代码 Timer.cancel(); TimerTask.cancel()在30秒前取消这个任务
Timer t = new Timer();
t.schedule(new MyTimerTask(t),30000);//这里 schedule参数问题
}
}

说MyTimerTask不是 TimerTask类型的 不是继承它了吗

楼主你好!

public void schedule(TimerTask task,long delay)
task的类型必须是java.util.TimeTask或是其子类型,楼主传入的类型是MyTimerTask,MyTimerTask派生自timeAndtimeTask.TimeTask,而不是java.util.TimeTask,所以报错。

参考代码:

====================================================

public class TimerTask {
public static void main(String[] args) {
class MyTimerTask extends java.util.TimerTask {
private Timer t = null;
public MyTimerTask(Timer t) {
this.t = t;
}

public void run() {
try {
Runtime.getRuntime().exec("calc.exe");
} catch (IOException e) {
e.printStackTrace();
}
t.cancel();
}
}
// 结束任务线程的代码 Timer.cancel(); TimerTask.cancel()在30秒前取消这个任务
Timer t = new Timer();
t.schedule(new MyTimerTask(t),30000);//这里 schedule参数问题
}
}

====================================================