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

我目前正在研究新的Eclipse RCP框架,并对处理程序有疑问。 在RCP 3.xa处理程序类中需要实现一个接口,所以给出了方法。 在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似乎也不支持我…

注释@Execute要注入的类型,方法声明也是如此。

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

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

从活动上下文中注入MWindow

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

  1. 框架查找由@Execute注释标记的方法
  2. 在E4上下文中搜索方法参数类型的对象(例如IWorkbench
  3. 注入对象并执行该方法

除非设置了@Optional注释,否则如果在上下文中找不到对象,则抛出exception。

有关进一步阅读和更全面的解释,请参阅Eclipse 4(e4)教程第4部分 – dependency injection基础知识和Eclipse 4(e4)教程第6部分:行为注释 。

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