Eclipse emf ecore 当比较通过从不同位置加载相同资源创建的两个EOObject时,EcoreUtil.equals返回false
我用Eclipse emf ecore 当比较通过从不同位置加载相同资源创建的两个EOObject时,EcoreUtil.equals返回false,eclipse-emf-ecore,Eclipse Emf Ecore,我用EcoreUtil.equals方法观察到一种奇怪的行为。我使用Resource的createResource和load方法从两个不同的位置加载了两个完全相同的XML文件(我在两个位置有相同的文件) ECoreUtil.equals为这两个e对象返回false。当我调试EcoreUtil.equals代码时,我看到它失败了,因为==检查EClass和EStructuralFeature。请注意,类和结构特征是相同的,但是,可以看到EClass和eststructuralfeature的两个独
EcoreUtil.equals
方法观察到一种奇怪的行为。我使用Resource的createResource
和load
方法从两个不同的位置加载了两个完全相同的XML文件(我在两个位置有相同的文件)
ECoreUtil.equals
为这两个e对象返回false
。当我调试EcoreUtil.equals
代码时,我看到它失败了,因为==检查EClass
和EStructuralFeature
。请注意,类和结构特征是相同的,但是,可以看到EClass
和eststructuralfeature
的两个独立实例EcoreUtil.equals
对特性和类执行==检查,因此失败
我无法理解的是,为什么会为EClass
和EStructuralFeature
创建两个实例。我确信这两个XML文件没有区别。一个是另一个的副本
ecore模型中是否存在任何可能是原因的设置?我的XML文件中有xmi:id
属性
我被这种行为难住了。有人能给点建议吗
问候,,
Arati最好在eclipse.tools.EMF论坛上询问EMF
你的问题中没有任何东西可以暗示为什么会有多个EPackage。这似乎表明您有一个使用动态Ecore模型的实例文件。是这样吗?即使在这种情况下,如果您在同一个资源集中加载资源,它们最终也应该共享一个模型。最好在eclipse.tools.EMF论坛上询问EMF
你的问题中没有任何东西可以暗示为什么会有多个EPackage。这似乎表明您有一个使用动态Ecore模型的实例文件。是这样吗?即使在这种情况下,如果您在同一个资源集中加载资源,它们最终也应该共享一个模型。Hi-Ed-感谢您的回复。我已经在eclipse论坛上发表了文章,但这是一个受限制的列表。我尝试使用相同的资源集加载资源,但没有帮助。实际上,XML代码片段被映射到AnyTypeImpl(因为我的XML文件可以包含我无法控制的不同类型的对象,所以它是可扩展的)。因此,我没有可用的EPackage到URI映射。因此,我最终比较了两个AnyTypeImpl对象,它们内部有FeatureMaps。我总是会收到两个不同的电子课堂、功能地图或EstrestructuralFeature实例。嗨,Ed,谢谢你的回复。我已经在eclipse论坛上发表了文章,但这是一个受限制的列表。我尝试使用相同的资源集加载资源,但没有帮助。实际上,XML代码片段被映射到AnyTypeImpl(因为我的XML文件可以包含我无法控制的不同类型的对象,所以它是可扩展的)。因此,我没有可用的EPackage到URI映射。因此,我最终比较了两个AnyTypeImpl对象,它们内部有FeatureMaps。我总是会得到两个不同的EClass或FeatureMap或EsstructuralFeature实例。