使用一个TimerTask
,一切看起来都很简单,工作正常
但我无法在一个Timer内处理不同的'TimerTasks'。
我尝试将TimerTask对象添加到构造函数中,但是当我将新的TimerTask(RemindTask1)对象作为参数(内部类的实例)传递时,会出现编译错误。
以下是一项任务的工作原理:
public class MyTimer {
Timer timer;
public MyTimer(long time) {
timer = new Timer();
timer.schedule(new RemindTask(), time);
}
class RemindTask extends TimerTask {
@Override
public void run() {
/// ...
timer.cancel();
}
}
public static void main(String[] args) {
/// ...
MyTimer myTimer = new MyTimer(5000);
/// ...
}
}
但我完全不知道应该如何创建多个任务然后运行。
public class MyTimer {
Timer timer;
public MyTimer(TimerTask tt, long time) {
timer = new Timer();
timer.schedule(tt, time);
}
class RemindTask1 extends TimerTask {
@Override
public void run() {
/// ...
timer.cancel();
}
}
class RemindTask2 extends TimerTask {
@Override
public void run() {
/// ...
timer.cancel();
}
}
public static void main(String[] args) {
/// ...
MyTimer myTimer = new MyTimer(new RemindTask2(), 5000);
/// ...
}
}
但那不起作用,我无法弄清楚出了什么问题。 当我将新的RemindTask2()作为参数传递时,我遇到了编译错误。
答案 0 :(得分:0)
我认为“不工作”是指编译器不允许您从静态上下文(RemindTask2
方法)创建内部类main
的实例。
通常有两种方法可以解决这个问题。
MyTimer
实例为您创建其内部类实例。这实际上不适合您,因为您需要在构建MyTimer
之前存在内部类实例。 MyTimer myTimer;
// initialize myTimer
TimerTask task = myTimer.new RemindTask2();
static
关键字将内部类更改为嵌套类。这是你的选择。 static class RemindTask2 extends TimerTask {
//...
}