【问题标题】:What's wrong with this simple EMF Model?这个简单的 EMF 模型有什么问题?
【发布时间】:2013-03-08 22:10:07
【问题描述】:

这个模型有什么问题:

/** @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

这个模型有什么问题?

【问题讨论】:

    标签: java model eclipse-emf


    【解决方案1】:

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

    在您的情况下,您可以拥有一个 List&lt;ContainedObject&gt; containedObjects 并创建两个额外的 getter 方法 getVariables()getCategories(),从该公共列表中过滤相应的元素,或者您可以创建两个 container 引用,一个用于categories 和一个variables

    或者,您可以删除显式 container 引用,而只使用 EObject 的隐式 eContainer / eContents 功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      相关资源
      最近更新 更多