2010-08-31 35 views
2

我目前在Java中使用一個單獨的線程,可能會用於很多不同的功能,我想知道是否有一種方法來傳遞命令的實際功能作爲參數調用。這看起來是沿着線:傳遞一個實際的命令作爲參數Java

class myWorkerThread implements Runnable 
{ 
    private (<String/whatever other type>) runCommand; 
    public myWorkerThread(<String/whatever other type> <my command>) 
    { 
    } 
    public void run() 
    { 
     //Actually run that command. 
    } 

} 

,我希望能得到一個工具,並不讓我用一個醜陋的開關case語句或者類似的東西。我要求線程運行的不同函數具有不同的參數,但我希望能夠使用相同的線程運行它們。

後續問題/其他資源的鏈接都很好。

謝謝。

+0

你對「命令」這個詞的含義是什麼? – 2010-08-31 22:54:51

+0

函數調用。 – sparkFinder 2010-09-01 22:22:23

回答

4

您不能將函數指針作爲Java中的參數傳遞。或者,您可以定義支持該操作的接口,並將引用傳遞給實現接口的對象。從該參考調用所需的方法。

此外,您使用Command這個詞讓我認爲Command Processor pattern可能是有用的。

+0

作爲補充,接口可以實現並作爲匿名類內聯傳遞給方法。你需要這個接口,因爲你需要知道如何從你的工作線程調用它。 – 2010-08-31 23:41:59

1

您可以使用​​方法創建一個Command接口。
然後,每個命令將是一個實現接口的獨立類。

0

你可能也想看看Java Reflection

這可能是因爲您可以使用字符串對象以名稱調用方法。

+1

Yuck,只有在沒有其他選項時才使用反射 – Ishtar 2010-09-01 09:03:23

+0

嗯,它有點像'goto',它只能在特定情況下使用。 – mikek3332002 2010-09-01 23:05:15