Ecore 是 EMF (Eclipse Modeling Framework) 的核心元模型,定義模型結構的類別繼承體系與關聯關係,可透過 Java、UML、XML 或 Ecore 本身定制,直接影響產生代碼品質。
統一描述屬性 (EAttribute) 與關聯 (EReference)。
| 欄位 | 型別 | 用途 |
|---|---|---|
| name | String | 特徵名稱 |
| eType | EClassifier | 型別 (屬性型別/引用目標型別) |
| lowerBound / upperBound | int | 多重度下限/上限 (-1 表無上限) |
| unique | boolean | 多值時是否允許重複 |
| changeable | boolean | 是否可修改 |
| transient | boolean | 序列化時是否忽略 |
| unsettable | boolean | 可否設為「未設定」狀態 |
| volatile | boolean | 無需儲存空間 (衍生屬性) |
| required | boolean | 是否必填 (等同 lowerBound=1) |
| many | boolean | 是否多值 (等同 upperBound=-1) |
| defaultValueLiteral / defaultValue | String / Object | 預設值字面量/實例 |
EAttribute 專有 iD (全域唯一標識);EReference 專有 containment (包含關係)、container (雙向引用)、resolveProxies (跨文件代理)、eOpposite (反向引用)。
name:名稱instanceClassName / instanceClass:對應 Java 類別defaultValue:預設實例abstract:是否抽象類interface:是否介面eStructuralFeatures、eOperations、eSuperTypes 等。serializable:是否需序列化| 類別 | 關鍵欄位 | 說明 |
|---|---|---|
| EPackage | nsURI, nsPrefix, eClassifiers, eSubpackages, eFactoryInstance | 命名空間 URI/前綴、所含分類器、子包、工廠實例 |
| EFactory | package | 對應 EPackage,提供建立實例的便利方法 |
掌握上述欄位與關聯,即可精準控制 EMF 代碼生成行為。