Eclipse RCP(e4)的新手,我试图获得一个处理程序来更新部件中的UI小部件。
我已尝试注入EPartService
以首先按ID访问Part,如下所示:
public class Example {
public static final String PART_ID = “au.org.example.app.part”;
@Inject
private EPartService partService;
public void eventOccured()
{
MPart part = partService.findPart(PART_ID); // exception thrown here
}
}
但这是投掷NPE。
如果ID不正确, findPart()
至少应该安全返回null
?那我错过了什么?
我也对相关教程的建议持开放态度(已完成了一些Lars Vogella's精彩教程,但无法解决这个问题)。
如需了解更多信息,请告知我们。
编辑:看起来EPartService
没有被注入?我没有正确添加吗?
答案 0 :(得分:2)
注入仅在应用程序模型已知的对象上自动完成 - 例如零件和处理程序。
对于您创建的对象,您可以使用ContextInjectionFactory
进行注射。您可以使用以下命令创建对象:
@Inject
IEclipseContext context;
...
MyClass myClass = ContextInjectionFactory.make(MyClass.class, context);
或者您可以使用以下命令对现有的类实例执行注入:
ContextInjectionFactory.inject(myClass, context);
在这种情况下,不对类构造函数执行注入。
还有make
和inject
的其他变体,它们具有第二个上下文,允许将其他值添加到正在注入的上下文中。