我正在尝试使用计时器定期重复一个功能。现在我必须将输入传递给函数,但是我得到错误“ activity 不是抽象的,并且不会覆盖java.util中的抽象方法run() .timertask ”。
将值传递给定时器调用的嵌套函数的正确做法是什么?在线或在java文档上的示例太模糊了。
下面是代码的骨架。任何的想法?也是一个文档的链接,可以更好地解释这个问题。
谢谢!
import java.util.*;
public class className {
Timer timer;
public static void main(String args[]) {
//declarations...
initialiseInputs(args);
new executePeriodicActivities(milliseconds); // milliseconds are in "args"
}
public void executePeriodicActivities(int seconds) {
timer = new Timer();
timer.scheduleAtFixedRate(new activity(args), 0, milliseconds);
}
class activity extends TimerTask { //error!
public void run() {
function(args)
if(condition(args)) {timer.cancel();}
}
}
}
答案 0 :(得分:1)
在activity
类中添加一个带有long
参数的构造函数。然后,您可以在run()
方法中使用该值。
class activity extends TimerTask {
private long milis;
public activity(long milis) {
this.milis = milis;
}
public void run() {
function(args)
if(condition(args)) {timer.cancel();}
}
}
答案 1 :(得分:0)
使用匿名内部类:
import java.util.*;
public class className {
Timer timer;
public static void main(String args[]) {
//declarations...
executePeriodicActivities(milliseconds, args); // milliseconds are in "args"
}
public static void executePeriodicActivities(int seconds, String[] args) {
timer = new Timer();
timer.scheduleAtFixedRate(new TimeTask()
{public void run() {
function(args)
if(condition(args)) {timer.cancel();}
}
}, 0, milliseconds);
}
}
或类似的东西