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 を設定します。
- 「値」と呼ばれる EAttribute または EReference を作成し、その EDataType または EClass を設定します。
ここで、このマップ エントリ クラスを EClass として使用する EReference をどこかに作成すると、EMF コード ジェネレーターはこの特殊なケースを検出し、通常の EList ゲッター/セッターの代わりに適切に型指定された EMap ゲッター/セッターを生成します。
これをXcoreモデルで使用できますか? ステップ 2 が Xcore で実行可能かどうか、またはマップがまったくサポートされているかどうかはわかりません。