Eclipse plugin 获取Eclipse中IPreferenceNode中存储的pluginId

Eclipse plugin 获取Eclipse中IPreferenceNode中存储的pluginId,eclipse-plugin,Eclipse Plugin,我正在开发一个插件,在我的插件中,我想获得另一个插件ID。我使用以下代码: PreferenceManager pm=PlatformUI.getWorkbench().getPreferenceManager(); List List=pm.getElements(PreferenceManager.PRE_ORDER); 字符串插件; //restoreDefValues(“org.eclipse.ant.ui”); 用于(IPreferenceNode:列表){ 查找与插件相关的节点的代码

我正在开发一个插件,在我的插件中,我想获得另一个插件ID。我使用以下代码:

PreferenceManager pm=PlatformUI.getWorkbench().getPreferenceManager();
List List=pm.getElements(PreferenceManager.PRE_ORDER);
字符串插件;
//restoreDefValues(“org.eclipse.ant.ui”);
用于(IPreferenceNode:列表){
查找与插件相关的节点的代码;
}

当我调试程序时,我可以清楚地看到,在变量节点(IPreferenceNode)中,它具有pluginId的值。但是,我检查了IPreferenceNode的文档,似乎IPreferenceNode和类PreferenceNode都没有提供返回pluginId值的方法。我也尝试了
node.toString()
,但无法获取插件ID。那我该怎么办?是否有其他方法可以从其他插件获取插件ID?

使用
org.eclipse.ui.preferencePages
扩展点创建的首选项节点实际上是
org.eclipse.ui.internal.dialogs.WorkbenchReferenceNode
的实例。此(
WorkbenchReferenceExtensionNode
)的超类包含插件id

这些类是内部类,因此您不应该尝试直接使用它们。但是,它们实现了
org.eclipse.ui.IPluginContribution
,可以使用它并具有
getPluginId()
方法

比如:

if(IPluginContribution的节点实例){
pluginId=((IPluginContribution)节点).getPluginId();
}

应该行。

嗨,格雷格,非常感谢你的评论。我很傻,问题很简单,我只需要升级界面。我是这样做的:WorkbenchReferenceExtensionNode wnode=(WorkbenchReferenceExtensionNode)节点。在WorkbenchReferenceExtensionNode中,它提供了一个直接获取pluginId的方法:)不要使用内部类,可以在不通知的情况下更改它们。