3

私は現在、新しい Eclipse RCP フレームワークを調べていて、ハンドラーについて質問があります。RCP 3.xa では、ハンドラー クラスにインターフェイスを実装する必要がありました。RCP 4 では、ハンドラー クラスはインターフェイスを実装する必要はありません。代わりに、メソッドに注釈を付けます。たとえばExitHandlerVogellas チュートリアルに as がある場合、@Execute注釈があります。ご覧のとおり、IWorkbenchパラメーターが渡されています。

package com.example.e4.rcp.todo.handler;

import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.workbench.IWorkbench;

public class ExitHandler {
  @Execute
  public void execute(IWorkbench workbench) {
    workbench.close();
  }
} 

私の質問は次のとおりです。特定の注釈を使用するときに渡されるパラメーターをどのように知ることができますか? この特定のケースで、Window オブジェクトなどではなく、オブジェクトを取得したことをどのように知ることができIWorkbenchますか? 実際、パラメーターなしでメソッドに注釈を付けることができ、それでも実行されます。

ドキュメントはどこかにありますか?Eclipse e4 ツールもサポートしていないようです...

4

1 に答える 1

3

アノテーション@Executeは注入される型を決定しません。メソッド宣言が決定します。

動作アノテーションとして、@Executeハンドラーの実行時に呼び出されるメソッドをマークします。注入されるオブジェクトのタイプは、メソッドの引数によって決まります。別のオブジェクト タイプを注入するには、メソッドの引数を変更します。

@Execute
public void execute(MWindow window) {
    // method body
}

MWindowアクティブなコンテキストからを注入します。

@Executeアノテーションにはアノテーションが含まれているため@Inject、イベントがトリガーされてハンドラーが実行されると、次のことが起こります。

  1. @Executeフレームワークは、注釈 によってマークされたメソッドを探します
  2. E4 コンテキストは、メソッドの引数の型のオブジェクトを検索します (例: IWorkbench)
  3. オブジェクトが注入され、メソッドが実行されます

注釈@Optionalが設定されていない場合、コンテキストでオブジェクトが見つからない場合、例外がスローされます。

さらに詳しい情報と詳細な説明については、 Eclipse 4 (e4) チュートリアル パート 4 - 依存性注入の基本 およびEclipse 4 (e4) チュートリアル パート 6: 動作注釈を参照してください。

Eclipse 4 アノテーションの概要は、Eclipse 4 Wikiにあります。

于 2013-07-15T11:24:26.287 に答える