我正在开发一个3.7版本的RCP应用程序,我们正在迁移到4.4版本,并决定使用兼容层。我们有一个实现IPartListener2接口的类,并且我们提供了partOpened方法的实现,代码如下:
public void partOpened(IWorkbenchPartReference partRef) {
if (partRef instanceof IEditorReference) {
//force editor area visible
partRef.getPage().setEditorAreaVisible(true);
// if the editors are currently minimimized and we try to maximize them,
then we'll cause a bug.
if (partRef.getPage().getPartState(partRef) ==
IWorkbenchPage.STATE_MINIMIZED) {
return; // so exit here
}
//get preferences from local method not included in example
final boolean maximized =
getMaximizedValue(PreferenceConstants.P_BOOL_MAXIMIZED_EDITORS);
if (maximized) {
partRef.getPage().setPartState(partRef, IWorkbenchPage.STATE_MAXIMIZED);
}
}
}当我调试对此方法的调用时,partRef的实例是org.eclipse.ui.internal.EditorReference类型。此外,partRef.getPage().setPartState(partRef, IWorkbenchPage.STATE_MAXIMIZED)本身也会调用内部工作台方法。我的问题是,如何将引用的内部调用/对象替换为相应的Eclipse4等效项?
发布于 2015-03-28 03:04:56
只要您只使用IEditorReference接口来访问它,那么partRef的实际类是什么并不重要。Eclipse传递给您的值通常都有一个内部实现类。只要您只使用这些类实现的公共接口,您就是在遵循规则。
类似地,setPartState调用是IWorkbenchPage接口的一部分。同样,实现IWorkbenchPage的实际类通常是内部的。
所以在这段代码中没有任何问题。只要您坚持使用接口,那么Eclipse使用什么来实现接口并不重要。
快速检查一下源文件的导入,如果它导入了包名中包含internal的任何内容,那么肯定有问题。
https://stackoverflow.com/questions/29308164
复制相似问题