繁体   English   中英

这个简单的EMF模型有什么问题?

[英]What's wrong with this simple EMF Model?

此模型有什么问题:

/** @model abstract="true" */
public interface ContainedObject {
   /** @model */
   public Container getContainer();
}

/** @model abstract="true" */
public interface Container extends ContainedObject { }

/* @model */
public interface Category extends Container {
   /** @model containment="true" opposite="container" */
   public List<Category> getCategories();   
   /** @model containment="true" opposite="container" */
   public List<Variable> getVariables();
}

/** @model */
public interface Variable extends ContainedObject { }

我想要包含的对象与其容器之间的双向性。 对于上述Java,当我尝试创建.genmodel时,出现以下错误消息:

the opposite 'container' already has attribute 'categories' of 'Category' 
as its opposite

这个模型怎么了?

相反的关系必须是1:1关系。 就我所知,不可能有两个引用指向相同的相反引用。 使用Ecore编辑器而不是带注释的Java类创建EMF模型时,这一点更加清楚。

在您的情况下,您可以拥有一个List<ContainedObject> containedObjects getVariables()并创建两个附加的getter方法getVariables()getCategories() ,从该公共列表中过滤各个元素,或者可以创建两个container引用,一个用于categories ,另一个用于对于variables

另外,您可以删除显式container引用,而仅使用EObject的隐式eContainer / eContents功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM