1

初始信息:我有一个 groovy 应用程序(我们称之为Runner),它能够运行任何实现特定接口的东西(我们称之为Runnable)。而且我有一个Runnables池(groovy 脚本),在初始化阶段应该对这个应用程序可见,以及哪个应用程序将调用(通过接口并将对象作为参数传递)。

任务:我需要的是一种从Runner加载和调用所有Runnables的方法。

要求:这很棘手,因为脚本可能不遵循某些包结构,并且可以与Runner放在同一台机器上,但实际上可以放在任何地方。它们也可以以不同的方式命名(关于强制性的 java 类似命名的公开讨论:类名 == 文件名)并且现在可以跳过(尽管如果有建议的话,这很酷!)。

注意:我想可以通过一个配置文件来配置脚本(提供绝对路径)并使用这些东西加载它们,然后将 Object 转换为Runnable接口并触发我需要的东西或调用方法(...)。但是不知道它是否可以更容易完成(应该有办法,因为它看起来太笨拙了)。我也想不出一种方法来处理文件命名问题和一个文件问题中的多个类。

PS:这么长的描述可能会引起误解,所以请评论模糊的部分。

4

2 回答 2

0

我认为您需要了解实现接口的所有类。查找实现接口的 Java 类可能会让您感兴趣。

于 2011-04-06T00:39:54.493 回答
0

拥有一个写入脚本绝对路径的配置文件的选项很好,并且被证明是一个可行的解决方案。您必须处理应用程序类加载器中不可见的任何内容的类加载。特别是您将不得不处理基于注释的 POJO 序列化问题。Runnable loader 的 Singleton 是一个很好的实践。

于 2011-04-13T15:32:21.377 回答