2010-08-31 79 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