3

我目前正在查看新的 Eclipse RCP 框架并对处理程序有疑问。在 RCP 3.xa 处理程序类中需要实现一个接口,所以在哪里给出方法。在 RCP 4 中,处理程序类不需要实现接口。相反,您注释方法。例如,如果您在Vogellas 教程ExitHandler中有一个as in,那么您就有一个注释。如您所见,有一个@ExecuteIWorkbench传递了一个参数。

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();
  }
} 

我现在的问题是:我如何知道使用某些注解时传递了哪些参数?在这种特定情况下,我怎么知道我得到一个IWorkbench对象而不是 Window 对象或其他东西?事实上,我可以注释一个没有参数的方法,它仍然会被执行。

某处有文档吗?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) Tutorial Part 4- Dependency Injection Basics Eclipse 4 (e4) Tutorial Part 6: Behavior Annotations

可以在Eclipse 4 Wiki中找到 Eclipse 4 注释的概述。

于 2013-07-15T11:24:26.287 回答