Eclipse RCP 4 - 处理程序方法参数

时间:2013-07-15 09:35:29

标签: java parameters annotations eclipse-rcp handler

我目前正在研究新的Eclipse RCP框架,并对处理程序有疑问。 在RCP 3.x中,需要一个处理程序类来实现接口,因此给出了方法。在RCP 4中,处理程序类不需要实现接口。而是你注释方法。例如。如果您在Vogellas Tutorial中有ExitHandler,则会有@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();
  }
} 

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

某处有文件吗? Eclipse e4 Tools似乎也不支持我......

1 个答案:

答案 0 :(得分:3)

注释@Execute不确定要注入的类型,方法声明会这样做。

作为行为注释,@Execute标记执行处理程序时应调用的方法。要注入的对象的类型由方法的参数确定。要注入另一个对象类型,请更改方法的参数,例如

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

从活动上下文中注入MWindow

@Execute注释包含@Inject注释,因此当触发事件并且将执行处理程序时,会发生以下情况:

  1. 框架查找@Execute注释
  2. 标记的方法
  3. 在E4上下文中搜索方法参数类型的对象(例如IWorkbench
  4. 注入对象并执行方法
  5. 除非设置了@Optional注释,否则如果在上下文中找不到对象,则抛出异常。

    如需进一步阅读和更详尽的说明,请参阅 Eclipse 4 (e4) Tutorial Part 4- Dependency Injection Basics Eclipse 4 (e4) Tutorial Part 6: Behavior Annotations

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