我目前正在研究新的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似乎也不支持我......
答案 0 :(得分:3)
注释@Execute
不确定要注入的类型,方法声明会这样做。
作为行为注释,@Execute
标记执行处理程序时应调用的方法。要注入的对象的类型由方法的参数确定。要注入另一个对象类型,请更改方法的参数,例如
@Execute
public void execute(MWindow window) {
// method body
}
从活动上下文中注入MWindow
。
@Execute
注释包含@Inject
注释,因此当触发事件并且将执行处理程序时,会发生以下情况:
@Execute
注释IWorkbench
)除非设置了@Optional
注释,否则如果在上下文中找不到对象,则抛出异常。
如需进一步阅读和更详尽的说明,请参阅 Eclipse 4 (e4) Tutorial Part 4- Dependency Injection Basics 和Eclipse 4 (e4) Tutorial Part 6: Behavior Annotations。
可以在Eclipse 4 Wiki找到Eclipse 4注释的概述。