【问题标题】:How to create a generic list with Eclipse EMF?如何使用 Eclipse EMF 创建通用列表?
【发布时间】:2012-07-17 14:24:55
【问题描述】:

我想用 Eclipse EMF 创建一个类,其中包含一个 ListString 对象。我看到 Ecore 有一个 EList,但我无法更改列表的泛型类型。

知道怎么做吗?

【问题讨论】:

    标签: eclipse eclipse-emf


    【解决方案1】:

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

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

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

    如果您想查看其他选项,请打开类型层次结构:org.eclipse.emf.common.util.AbstractEList&lt;E&gt;

    【讨论】:

    • 感谢您的回答。这对我帮助很大!
    【解决方案2】:

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

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

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

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

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

    在您的示例 Ecore 模型编辑器中,您希望通过

    实现How your method looks in the Ecore Editor
    • 向 MyClass 添加 EOperation 的“新子代”,将其命名为 getListOfType
    • 将 ETypeParameter 的“新子代”添加到 getListOfType,命名为 T
    • 向 T 添加一个 EGeneric Bound Type 的“New Child”,您会看到一个“T extends ?”而不是“T”
    • 点击箭头到“T extends ?”,点击“?”,在“Property”窗口的EClassifier下拉菜单中选择一个EString,现在你会看到“T extends EString”

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

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

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

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

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

    【讨论】:

    • 感谢您的精彩教程。我遇到了问题,因为我没有在我的编辑器中启用泛型。为此,请转到 Sample Ecore Editor --> Show Generics。
    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多