[英]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.