假设我有一个符合 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元模型未指定EReferences之间的任何类型的层次结构。我可以使用什么方法来过滤掉我不感兴趣的更一般的EReferences
?
答案 0 :(得分:0)
您可以过滤掉“派生”引用(org.eclipse.emf.ecore.EStructuralFeature.isDerived()== false)。