如何创建数据类型不是EMF类的EAttribute?

时间:2013-09-18 14:01:27

标签: java eclipse-emf

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

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

3 个答案:

答案 0 :(得分:6)

您可以通过在* .ecore文件中手动添加eClassifiers条目,将数据类型添加到eCore模型。 (我无法通过Eclipse UI找到一种机制来实现这一点。)

例如:

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

这将使类在EAttributes的属性编辑器中作为EType的选项可用。它似乎不适用于EReferences。

答案 1 :(得分:4)

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

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

现在Date可以用作与Stringint一致的属性的数据类型。

你对Ecore做同样的事情,除了你不必首先明确地导入类型 - 例如。

<eClassifiers xsi:type="ecore:EDataType" name="Date"
   instanceClassName="java.util.Date" serializable="false"/>

答案 2 :(得分:4)

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

根据迈克尔的回答,在Ecore模型编辑器中,您只需右键单击并选择

即可

新生儿 - &gt; EData类型

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