1

デザインのプロトタイピングとデバッグの目的で、GroovyConsole を既存の Java アプリに組み込みたいと考えています。

私はこのコンソールが私のプログラム全体にアクセスできることを本当に望んでいます。これはほとんどの場合、GroovyConsole の世界のためだけに新しいオブジェクトを作成するのではなく、シングルトンまたはファクトリが実際のオブジェクトを返す必要があることを意味します。

これを行う方法はありますか、または setVariable() 呼び出しを使用してすべてのオブジェクトを 1 つずつ手動で渡す必要がありますか?

4

1 に答える 1

2

これは実際には非常に簡単です。ほとんどの場合、引数なしのコンストラクターを使用して新しいコンソールを作成するだけで、希望どおりに機能します。アプリケーションが複数の classLoader を使用する場合は、Console インスタンスを作成するときに必要なものを渡すだけです。

def cl = ... //which ClassLoader you'll need depends on your application
def console = new Console(cl)
console.run()

これにより、新しい Groovy コンソールが作成され、必要なクラス ローダーを使用するように指示されます。これはバインディングや変数を設定しませんが、コンソールが使用しているクラスがアプリケーションの残りの部分とまったく同じであることを保証します。アプリケーションのクラスローダで特別なことをしていない場合、new Console() を呼び出すだけで、現在のクラスローダが親として使用されます。

于 2014-02-06T17:52:11.830 に答える