2010-11-17 188 views
3

我試圖使用定時器來定期重複一個函數。現在我必須將輸入傳遞給該函數,但是我收到錯誤「活動不是抽象的,也不會覆蓋java.util.timertask中的抽象方法run()」。類不抽象,也不重寫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();} 
     } 
    } 
} 
+3

建議:你應該在用大寫字母命名你的類的習慣。有兩個原因:1)它使你的代碼更容易閱讀, 2)所以人們不再告訴你這麼做;-) – Jeremy 2010-11-17 17:16:27

+1

@傑瑞米,#2讓我大聲笑出聲來。 – jjnguy 2010-11-17 17:23:55

+0

讓我們說這是我強烈的蘇格蘭口音:P,但我會盡量記住 – 2010-11-17 17:30:22

回答

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();} 
    } 
} 
+0

danke,簡單而有效 – 2010-11-17 17:32:32

+0

@Andrew,不客氣,很高興幫助。 – jjnguy 2010-11-17 17:37:10

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

} 

或類似的東西

+0

測試過,它也適用於這個,但最後我會使用jjnguy的解決方案,更容易= D。無論如何感謝您的幫助! – 2010-11-17 17:41:13

相關問題