首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

EMF 介紹系列(四):枚舉、自訂資料類型與 EMap 完整指南

     編輯:Java 相關知識

枚舉類型

適用於屬性值為有限集合的情況(如評分:好、中、差)。

  1. 在類圖建立 Enumeration(如 Score),新增字面值並指定整數識別碼。
  2. 為 Product 新增 score 屬性,型別選 Score。
  3. 重新生成代碼,屬性視圖將以下拉選單編輯枚舉值。

自訂資料類型

當需使用 EMF 未內建的 Java 類別(如 SWT 的 RGB),或整合 Legacy 代碼時使用。

  1. 建立 Data Type(如 RGB),設 Instance Class 為 org.eclipse.swt.graphics.RGB。
  2. 為 Product 新增 background 屬性,型別選 RGB。
  3. 專案需加入 org.eclipse.swt 相依性。

關鍵步驟: EMF 不知如何持久化自訂類型,需修改 ShopFactoryImpl:

public RGB createRGBFromString(EDataType eDataType, String initialValue) {
    String[] values = initialValue.split(",");
    return new RGB(
        Integer.parseInt(values[0]),
        Integer.parseInt(values[1]),
        Integer.parseInt(values[2])
    );
}

public String convertRGBToString(EDataType eDataType, Object instanceValue) {
    RGB rgb = (RGB) instanceValue;
    return rgb.red + "," + rgb.green + "," + rgb.blue;
}

持久化格式為 "255,90,150"。

EMap(Map 型別屬性)

EMF 以 EList 模擬 Map,需定義 MapEntry 類別:

  1. 建立類別 StringToIntegerMapEntry,屬性 key(String)、value(Integer)。
  2. 設 Instance Class Name = java.util.Map$Entry。
  3. 在需 Map 的類別(如 Product)建立 包含關係(黑菱形)引用此 Entry,多重度 0..*。

生成後,介面會出現:

EMap getSalesMap(); // key=String, value=Integer

編輯器中可新增鍵值對;程式碼使用 product.getSalesMap().put("2005-09", 100),注意值必須為 Integer 物件。

模型演進圖示

經過上述擴充,商店模型包含枚舉、自訂類型與 Map,結構更豐富完整。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved