我正在使用EcoreUtil.equals
方法观察一种奇怪的行为。我正在使用资源的createResource
和load
方法加载2个XML文件,它们来自2个不同的位置(我在2个位置有相同的文件)完全相同。
ECoreUtil.equals
为这两个EObjects
返回false。当我调试EcoreUtil.equals
代码时,由于对EClass
和EStructuralFeature
的==检查,我发现它失败了。请注意,类和结构特征是相同的,但是,可以看到EClass
和EStructuralFeature
的2个单独实例。 EcoreUtil.equals
执行==检查功能和类,因此失败。
我无法理解为什么会为EClass
和EStructuralFeature
创建2个实例。我确信2个XML文件没有区别。一个是另一个的副本。
生态模型中是否有任何设置可能是原因?我的XML文件中包含xmi:id
属性。
我被这种行为困扰了。任何人都可以提供任何指示吗?
此致 阿尔提
答案 0 :(得分:1)
最好在eclipse.tools.emf论坛上询问EMF。
你的问题中没有任何内容可以暗示为什么会有多个EPackage。它似乎建议你有一个使用动态Ecore模型的实例文件。是这样的吗?即使在这种情况下,如果您在同一资源集中加载资源,它们最终也应该共享一个模型。