根据EMF FAQ,可以在 EMF 中创建地图:
EMap 基本上是 java.util.Map$Entry 实例的列表。因此,要创建地图,您首先需要按照以下步骤对地图条目进行建模:
- 创建一个名为 [Type1]To[Type2]Map 的 EClass,其中 [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 中是否可行,或者它是否完全支持地图。