Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Eclipse EMF创建通用列表?_Eclipse_Eclipse Emf - Fatal编程技术网

如何使用Eclipse EMF创建通用列表?

如何使用Eclipse EMF创建通用列表?,eclipse,eclipse-emf,Eclipse,Eclipse Emf,我想用EclipseMF创建一个类,它包含一个带有String对象的List。我看到Ecore有一个EList,但我无法更改列表的泛型类型 你知道怎么做吗?如果你想生成一个给你一个EList的代码,那么在EClass中添加一个新的EAttribute,给它一个ETypeEString,并将它的“上限”属性设置为“-1” 如果希望以编程方式创建这样的列表,可以使用BasicEList例如(org.eclipse.emf.common.util.BasicEList): EList stringLi

我想用EclipseMF创建一个类,它包含一个带有
String
对象的
List
。我看到Ecore有一个
EList
,但我无法更改列表的泛型类型


你知道怎么做吗?

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

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

EList stringList=new BasicEList();

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

不确定您的问题是否得到了回答,以及您实际想要做什么

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

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

假设在生成的Java类MyClass中需要这样的方法:

<T extends String> EList<T> getListOfType(Class<T> T)
EList getListOfType(T类)
在示例Ecore模型编辑器中,您希望通过

  • 在MyClass中添加一个EOperation的“新子级”,将其命名为getListOfType
  • 将ETypeParameter的“新子项”添加到getListOfType中,将其命名为T
  • 向T添加一个e能绑定类型的“新子级”,您将看到一个“T扩展?”而不是“T”
  • 单击箭头“T延伸?”,单击“?”,在“属性”窗口中,在EClassifier A EString的下拉菜单中选择,现在您将看到“T延伸EString”

  • 向getListOfType添加一个EGeneric返回类型的“新子级”

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

  • 向getListOfType添加“EParameter”的“新子项”

  • 在新创建的参数“null”的属性窗口中,选择Name作为“clazz”,EType作为“EJavaClass”
  • 在新“”的属性窗口中(节点“clazz:EJavaClass”下两级),选择EType参数为“T extends EString”,此时“clazz:EJavaClass”变为“clazz:EJavaClass”
现在可以使用youre.ecore文件生成java类了


谢谢你的回答。这对我帮助很大!谢谢你的精彩教程。我在遵循它时遇到了问题,因为我还没有在编辑器中启用泛型。为此,请转到示例Ecore编辑器-->显示泛型。
<T extends String> EList<T> getListOfType(Class<T> T)