假设我有一个符合org.eclipse.uml2.UML元模型的UML模型。假设该模型包含Class
、Property
和它们之间的ownedAttribute
关系。
在Ecore水平上,Class
和Property
是EObjects
,而ownedAttribute
是EReference
。
我的任务如下:给定一个EObject
,检索它的所有EReferences
。我可以使用以下代码片段来实现这一点:
for (EReference eRef : myEObject.eClass().getEAllReferences()) {
if (eObject.eIsSet(eRef)) {
// found a relevant EReference
}
}
回到上面的UML示例,此代码片段将标识以下所有EReferences
:ownedElement
、ownedMember
、member
、feature
、attribute
、ownedAttribute
、role
。
我的问题是:在已识别的EReferences
中,我只想保留ownedAttribute
,因为这种关系根据UML标准将所有其他关系子集化。但是,Ecore元模型没有指定EReference之间的任何层次结构。我可以使用什么方法来筛选出我不感兴趣的更通用的EReferences
?
您可以筛选出"派生"引用(org.eclipse.emf.ecore.EStructurealFeature.isDerived()==false)。