1

初期情報:特定のインターフェイス ( Runnableと呼びましょう) を実装するあらゆるものを実行できるグルーヴィーなアプリ ( Runnerと呼びましょう) があります。そして、初期段階でこのアプリに表示され、どのアプリが (インターフェイスを介してオブジェクトをパラメーターとして渡す) を呼び出すRunnables (groovy スクリプト)のプールがあります。

タスク:必要なのは、 RunnerからすべてのRunnablesを読み込んで呼び出す方法です。

要件:スクリプトは特定のパッケージ構造に従わない場合があり、Runnerと同じマシンに配置できますが、事実上任意の場所に配置できるため、注意が必要です。また、別の名前を付けることもでき (java に似た必須の名前付けについてはオープン ディスカッション: クラス名 == ファイル名)、今のところスキップすることもできます (ただし、それについてのアドバイスがある場合はクールです!)。

注:スクリプトが構成されている構成ファイル(絶対パスが提供されている)を使用して、このようなものを使用してそれらをロードし、 Object をRunnableインターフェイスにキャストして、必要なものをトリガーするか、またはinvokeMethod(...)をトリガーすることで可能だと思います。しかし、それがより簡単にできるかどうかはわかりません (方法があるはずです。あまりにも不器用に見えるからです)。また、ファイルの命名の問題と複数のクラスを 1 つのファイルの問題で処理する方法も考えられません。

PS: 長い説明は誤解を招く可能性がありますので、あいまいな部分についてコメントしてください。

4

2 に答える 2

0

インターフェイスを実装するすべてのクラスを知る必要があると思います。インターフェースを実装する Java クラスを見つけて、興味を引くことができるかもしれません。

于 2011-04-06T00:39:54.493 に答える
0

スクリプトの絶対パスが記述された構成ファイルを持つオプションは適切であり、実用的なソリューションであることが証明されています。アプリのクラス ローダーに表示されないクラスの読み込みを処理する必要があります。特に、注釈ベースの POJO シリアライゼーションの問題に対処する必要があります。Runnable ローダーのシングルトンは良い習慣です。

于 2011-04-13T15:32:21.377 に答える