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
批注,因此当触发事件并且将执行处理程序时,会发生以下情况:
- 框架查找由
@Execute
注释标记的方法 - 在E4上下文中搜索方法参数类型的对象(例如
IWorkbench
) - 注入对象并执行该方法
除非设置了@Optional
注释,否则如果在上下文中找不到对象,则抛出exception。
有关进一步阅读和更全面的解释,请参阅Eclipse 4(e4)教程第4部分 – dependency injection基础知识和Eclipse 4(e4)教程第6部分:行为注释 。
可以在Eclipse 4 Wiki中找到Eclipse 4注释的概述。