12

List我想用包含String对象的 Eclipse EMF 创建一个类。我看到 Ecore 有一个EList但我无法更改列表的通用类型。

知道怎么做吗?

4

2 回答 2

17

如果你想生成一个给你的代码EList<String>,那么添加一个新EAttribute的给一个EClass,给它一个EType EString,并将它的“上界”属性设置为'-1'。

如果您想以编程方式创建这样的列表,您可以使用BasicEList例如 ( org.eclipse.emf.common.util.BasicEList<E>):

EList<String> stringList = new BasicEList<String>();

如果您想查看其他选项,请在以下位置打开类型层次结构:org.eclipse.emf.common.util.AbstractEList<E>

于 2012-07-18T18:03:43.980 回答
8

不确定您的问题是否已得到解答,以及您真正想要做什么。

如果您想从 .ecore 文件生成 Java 代码,那么我在这里提供了一个使用 Eclipse Juno 的 EMF 示例 Ecore 模型编辑器的示例(右键单击 .ecore 文件)。

也许这不是您想要的,但这可能对其他人有帮助。

假设您想要在生成的 Java 类 MyClass 中使用这样的方法:

<T extends String> EList<T> getListOfType(Class<T> T)

在您的示例 Ecore 模型编辑器中,您希望通过以下方式实现您的方法在 Ecore 编辑器中的外观

  • 将 EOperation 的“新孩子”添加到 MyClass,将其命名为 getListOfType
  • 将 ETypeParameter 的“新子代”添加到 getListOfType,将其命名为 T
  • 添加到 T 一个 EGeneric Bound Type 的“New Child”,你会看到一个“T extends ?” 而不是“T”
  • 单击箭头到“T extends ?”,单击“?”,在“属性”窗口中,在 EClassifier 的下拉菜单中选择一个 EString,现在您会看到“T extends EString”

  • 将 EGeneric 返回类型的“新孩子”添加到 getListOfType

  • 点击新创建的“?” 返回类型,在 EClassifier 的下拉菜单中选择一个 EEList
  • 打开 EEList 的箭头,在 Property 窗口中,在 EType Parameter 的下拉菜单中选择“T extends EString”

  • 将“EParameter”的“新孩子”添加到 getListOfType

  • 在新创建的参数“null”的属性窗口中,选择Name为“clazz”,EType为“EJavaClass”
  • 在新的“?”的属性窗口中 (节点“clazz:EJavaClass”下两层),选择EType Parameter为“T extends EString”,现在“clazz:EJavaClass”变为“clazz:EJavaClass”

现在您的 .ecore 文件已准备好用于生成 java 类。

您的方法在 Ecore 编辑器中的外观

于 2013-07-17T09:30:32.753 回答