1

假设我有一个符合org.eclipse.uml2.uml元模型的 UML 模型。假设此模型包含 a Class、 aProperty和它们之间的ownedAttribute关系。

在 Ecore 级别, theClass和 thePropertyEObjects,而 theownedAttribute是 a EReference

我的任务如下:给定一个EObject,检索它的所有EReferences. 我可以使用以下代码片段来完成此操作:

for (EReference eRef : myEObject.eClass().getEAllReferences()) {
    if (eObject.eIsSet(eRef)) {
        // found a relevant EReference
    }
}

回到上面的 UML 示例,此代码片段将识别以下所有内容EReferencesownedElement, ownedMember, member, feature, attribute, ownedAttribute, role

我的问题:在已识别的EReferences中,我只想保留ownedAttribute,因为根据 UML 标准,这种关系是所有其他关系的子集。但是,Ecore 元模型没有指定 EReference 之间的任何类型的层次结构。我可以使用什么方法来过滤掉EReferences我不感兴趣的更一般的内容?

4

1 回答 1

0

您可以过滤掉“派生”引用(org.eclipse.emf.ecore.ESructuralFeature.isDerived() == false)。

于 2014-10-23T15:50:43.970 回答