我正在用EcoreUtil.equals方法观察一个奇怪的行为。我正在使用资源createResource和load方法从 2 个不同的位置(我在 2 个位置有相同的文件)加载 2 个完全相同的 XML 文件。
ECoreUtil.equals为这些 2 返回 false EObjects。当我调试EcoreUtil.equals代码时,我发现它因为 == 检查EClass和EStructuralFeature. 请注意,类和结构特征是相同的,但是可以看到EClass和的 2 个单独实例。对功能和类进行 == 检查,因此失败。EStructuralFeatureEcoreUtil.equals
我无法理解的是为什么会为EClass和创建 2 个实例EStructuralFeature。我确信这 2 个 XML 文件没有区别。一个是另一个的副本。
ecore 模型中是否有任何设置可能是原因?我的 XML 文件中有xmi:id属性。
我被这种行为难住了。任何人都可以提供任何指示吗?
问候,阿拉蒂