簡體   English   中英

class不是抽象的,不會覆蓋java.util.timertask中的抽象方法run()

[英]class is not abstract and does not override abstract method run() in java.util.timertask

我正在嘗試使用計時器定期重復一個功能。 現在我必須將輸入傳遞給函數,但是我得到錯誤“ 活動 不是抽象的,並且不會覆蓋java.util.timertask中的抽象方法run() ”。

將值傳遞給定時器調用的嵌套函數的正確做法是什么? 在線或在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();}
        }
    }
}

向您的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();}
    }
}

使用匿名內部類:

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);
    }

}

或類似的東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM