1

我正在用EcoreUtil.equals方法观察一个奇怪的行为。我正在使用资源createResourceload方法从 2 个不同的位置(我在 2 个位置有相同的文件)加载 2 个完全相同的 XML 文件。

ECoreUtil.equals为这些 2 返回 false EObjects。当我调试EcoreUtil.equals代码时,我发现它因为 == 检查EClassEStructuralFeature. 请注意,类和结构特征是相同的,但是可以看到EClass和的 2 个单独实例。对功能和类进行 == 检查,因此失败。EStructuralFeatureEcoreUtil.equals

我无法理解的是为什么会为EClass和创建 2 个实例EStructuralFeature。我确信这 2 个 XML 文件没有区别。一个是另一个的副本。

ecore 模型中是否有任何设置可能是原因?我的 XML 文件中有xmi:id属性。

我被这种行为难住了。任何人都可以提供任何指示吗?

问候,阿拉蒂

4

1 回答 1

1

最好在 eclipse.tools.emf 论坛上询问 EMF。

您的问题中没有任何内容可以暗示为什么会有多个 EPackage。似乎建议您有一个使用动态 Ecore 模型的实例文件。是这样吗?即使在这种情况下,如果您在同一资源集中加载资源,它们最终应该共享一个模型。

于 2012-11-01T11:23:44.730 回答