根据EMF FAQ,可以在EMF中创建一个Map:
EMap基本上是java.util.Map $ Entry实例的List.因此,要创建Map,您需要首先按照以下步骤为地图条目建模:
- 创建一个名为[Type1]的EClass到[Type2] Map,其中[Type1]表示键的类型,[Type2]表示值的类型.
- 将新创建的EClass的Instance Class Name属性设置为java.util.Map $ Entry.
- 创建名为"key"的EAttribute或EReference,并为其设置EDataType或EClass.
- 创建一个名为"value"的EAttribute或EReference,并为其设置EDataType或EClass.
现在,当您使用此映射条目类作为其EClass创建一个EReference时,EMF代码生成器将检测此特殊情况并为您生成正确类型的EMap getter/setter,而不是正常的EList getter/setter.
我可以在Xcore模型中使用它吗?我不确定步骤#2在Xcore中是否可行,或者它是否支持地图.
使用Xcore定义元模型比使用EMF和Ecore更容易.问题是我需要将元模型作为Ecore文件.是否可以将Xcore模型导出到Ecore模型?我没有在Eclipse中看到任何导出选项.