8

使用 EMF,我想定义一个属性,其数据类型 (EType) 在我的 EMF 模型之外。也就是说,我想要的类型是一个普通的手工编码的 Java 类,它不属于我的 EMF 模型的一部分。使用AnySimpleType是最后的手段。我想要比使用泛型Object提供更多的类型安全(和更少的类型转换)。

Eclipse 的属性编辑器将 EType 限制为一组预定义的值。我既不能输入我自己的班级名称,也不能找到将我想要的班级添加到选项列表中的方法。

4

3 回答 3

6

eClassifiers您可以通过手动向*.ecore 文件添加条目来向 eCore 模型添加数据类型。(我无法通过 Eclipse UI 找到执行此操作的机制。)

例如:

<eClassifiers xsi:type="ecore:EDataType"
 name="MyClass" instanceClassName="my.package.MyClass"/>

这将使该类在 EAttributes 的属性编辑器中作为 EType 的一个选项可用。它似乎没有使它可用于 EReferences。

于 2013-09-23T15:13:06.113 回答
5

我正在使用带有 EMF 2.9.1 的 Eclipse Kepler。

添加到迈克尔的答案,在 Ecore 模型编辑器中,您只需右键单击并选择

新子级 -> EData 类型

然后在“属性”视图中填写您的值(名称、实例类型名称)。因此,您不必再手动添加它。

于 2014-02-25T14:49:34.200 回答
4

假设您使用 Xcore 作为建模语言,然后使用

import java.util.Date
...
type Date wraps Date

现在Date可以用作符合String和的属性的数据类型int

您对 Ecore 执行相同操作,只是您不必先显式导入类型 - 例如

<eClassifiers xsi:type="ecore:EDataType" name="Date"
   instanceClassName="java.util.Date" serializable="false"/>
于 2013-09-18T14:12:12.573 回答