BeanShellスクリプトインタフェースのインタフェースタイプとタイプ変換


BeanShellの詳細についてはこちらをクリックしてください.
表示されるタイプ変換を実行してBeanShellスクリプトオブジェクトをインタフェースタイプに変換するのは正当ですが、通常は必要ありません.サンプルコード

  
  
  
  
  1. actionPerformed( event ) { 
  2. print( event ); 
  3. button.addActionListener( 
  4. (ActionListener)this ); //   

上記のコードでは、BeanShellがaddActionListener()メソッド署名の「this」タイプパラメータをマッチングしようとすると、ActionListenerのタイプ変換がすでに完了している可能性があります.表示されるようにタイプ変換を実行するのは同じ効果がありますが、内部には異なるルートが採用されています.タイプ変換を表示することで、BeanShellはまず必要なアダプタを作成してActionListenerインタフェースを実装し、最も一致する方法を探します.何が違うの?もちろん、タイプが作成されると、どこで表示の変換を実行して制御するかがポイントになる場合があります.具体的には、スクリプトに参照を渡すと、Javaクラスでは予想されるタイプで自動的に使用されません.以前のディスカッションでは、「BeanShellスクリプト」で自動タイプ変換が発生することについて説明しました.これまでの例では、BeanShellはスクリプトオブジェクトを渡す前に正しいタイプに変換する機会があった.しかし、「Object」タイプを渡すなど、「this」参照をメソッドに渡すことができます.この場合、BeanShellはその後の使用でどのタイプなのか分からない可能性があります.たとえば、スクリプトオブジェクトをあるタイプのコレクション(MapまたはList)に配置するとします.これにより、スクリプトを参照する前に、表示されるタイプを目的のタイプに変換するプロセスを制御できます.別のケースでは、BeanShellを埋め込みアプリケーションで使用し、Interpreterクラスからeval()またはget()の変数としてスクリプトオブジェクトを返した結果を示すタイプ変換をどこかで実行する必要があります.これはまたBeanShellがスクリプトで予想されるタイプを知ることができない例です.スクリプトから参照する前に、表示されるタイプ変換を実行してタイプを作成できます.次の章では、InterpreterクラスのgetInterface()メソッドを使用するBeanShell埋め込みアプリケーションについて説明します.それは、1つのスクリプトの外でこのタイプの変換を完了する別の方法です.