如何在Java中公开方法调用的动态列表?

如何在Java中公开方法调用的动态列表?,java,algorithm,reflection,pipeline,Java,Algorithm,Reflection,Pipeline,您建议如何着手实施以下场景。我有一些想法,但没有一个能完全解决我的问题,所以我想听听你们的意见 我正在构建一种类型的工作流应用程序。用户创建需要执行的活动管道。我面临的问题是这个。管道中的每个“小部件”必须定义它可以接受什么作为输入,以及它将产生什么作为输出。它可以接收任意数量的输入“流”,也可以产生多个输出“流”。现在问题出现了。这些需要通过动态的方式来实现。例如,有人应该能够为应用程序编写一个插件,在这个插件中他定义了自己的小部件,包括输入和输出。但是其他小部件需要能够连接到它,以便它们可以

您建议如何着手实施以下场景。我有一些想法,但没有一个能完全解决我的问题,所以我想听听你们的意见

我正在构建一种类型的工作流应用程序。用户创建需要执行的活动管道。我面临的问题是这个。管道中的每个“小部件”必须定义它可以接受什么作为输入,以及它将产生什么作为输出。它可以接收任意数量的输入“流”,也可以产生多个输出“流”。现在问题出现了。这些需要通过动态的方式来实现。例如,有人应该能够为应用程序编写一个插件,在这个插件中他定义了自己的小部件,包括输入和输出。但是其他小部件需要能够连接到它,以便它们可以将输出发送到新的小部件,或者从新的小部件接收输入

首先应该如何公开可接受的输入和输出列表,其次,如何计算调用小部件的方法。例如,如果我想将我的小部件的输出发送到新的小部件,我需要能够计算是否有一个可接受的接收方法(在这种情况下可能有多个),其次,我需要知道调用的方法以将数据提供给

我已经看过了闭包、代理等,它们似乎能够满足我的需要。我想我会先得到更多的信息


谢谢。

看看消息驱动的体系结构和Mule ESB。

我建议您强制所有组件实现一个或多个接口,允许其他组件和框架使用这些接口来询问组件可以发送什么和可以接收什么


这将使您的代码更加健壮,工作所需的魔法更少。

您认为以下几点如何?我想我会做的是,与任何第三方执行一个契约,并使用一个接口,要求他们返回我定义的包装类的集合。这个包装器基本上包含一些元数据,包括它公开的方法名和参数。然后我可以通过反射来访问它。不要使用反射。改用接口。有什么理由不使用反射吗?这很简单。而且这些电话很少打,所以性能应该不是问题。或者我遗漏了什么?反射意味着你在路径中的实际代码之外,例如,通过将类名表示为字符串,因为如果你不是,你就不必这样做。请看各种依赖引擎以及它们为改进这一点而进行的长期斗争,以摆脱带有类名的XML文件。如果接口可以,不要使用反射。