我想查找org.example.extension.point
中声明的com.example.plugin
的所有扩展名。有没有比做
List<IConfigurationElement> result = new ArrayList<IConfigurationElement>();
IConfigurationElement[] allConfigElements =
Platform.getExtensionRegistry.getConfigurationElementsFor("org.example.extension.point");
for (IConfigurationElement ice : allConfigElements) {
if (ice.getDeclaringExtension().getNamespaceIdentifier() == "com.example.plugin")
result.add(ice);
}
return result;
答案 0 :(得分:2)
没有其他(更有效的)方法(这不够简单吗?;)。另外,我使用ice.getContributor().getName()
代替ice.getDeclaringExtension().getNamespaceIdentifier()
我真的很想知道您为什么要按特定的贡献者进行过滤。 - 我的意思是如果你必须“知道”贡献者你为什么使用扩展点?扩展点的主要目的是使用控制反转;使用扩展点的主要特征是不知道贡献者。没有冒犯,但可能你正在以一种他们不打算用于...的方式使用扩展点。