如何在Xcore

时间:2016-12-29 21:07:06

标签: eclipse-emf emf xcore

根据EMF FAQ,可以在EMF中创建地图:

  

EMap基本上是java.util.Map $ Entry实例的List。   因此,要创建地图,您需要先为地图条目建模   遵循以下步骤:

     
      
  1. 创建一个名为[Type1]的EClass到[Type2] Map,其中[Type1]表示键的类型,[Type2]表示值的类型。
  2.   
  3. 将新创建的EClass的Instance Class Name属性设置为java.util.Map $ Entry。
  4.   
  5. 创建名为" key"的EAttribute或EReference;并为其设置EDataType或EClass。
  6.   
  7. 创建名为"值"的EAttribute或EReference;并为其设置EDataType或EClass。
  8.         

    现在,当您在某处使用此地图条目创建EReference时   class作为它的EClass,EMF代码生成器将检测这个特殊的   大小写并为您生成一个正确类型的EMap getter / setter   一个普通的EList getter / setter。

我可以在Xcore型号中使用它吗?我不确定步骤#2在Xcore中是否可行,或者它是否支持地图。

1 个答案:

答案 0 :(得分:6)

对我而言,这是有效的。

DataPoints.xcore

...
class KeyValuePair wraps java.util.Map$Entry {
    String key
    String value
}

class KeyValueList {
    contains KeyValuePair[] entries
}

上述结果为KeyValueListImpl类,其getEntries方法如下:

public EMap<String, String> getEntries() {
    if (entries == null) {
        entries = new EcoreEMap<String,String>(DataPointsPackage.Literals.KEY_VALUE_PAIR, KeyValuePairImpl.class, this, DataPointsPackage.KEY_VALUE_LIST__ENTRIES);
    }
    return entries;
}