【发布时间】:2012-07-17 14:24:55
【问题描述】:
我想用 Eclipse EMF 创建一个类,其中包含一个 List 和 String 对象。我看到 Ecore 有一个 EList,但我无法更改列表的泛型类型。
知道怎么做吗?
【问题讨论】:
标签: eclipse eclipse-emf
我想用 Eclipse EMF 创建一个类,其中包含一个 List 和 String 对象。我看到 Ecore 有一个 EList,但我无法更改列表的泛型类型。
知道怎么做吗?
【问题讨论】:
标签: eclipse eclipse-emf
如果你想生成一个给你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<E>
【讨论】:
不确定您的问题是否得到解答,以及您真正想要做什么。
如果您想从 .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点击箭头到“T extends ?”,点击“?”,在“Property”窗口的EClassifier下拉菜单中选择一个EString,现在你会看到“T extends EString”
将 EGeneric 返回类型的“新子代”添加到 getListOfType
打开EEList的箭头,在Property窗口的EType Parameter下拉菜单中选择“T extends EString”
向 getListOfType 添加“EParameter”的“新子代”
现在您的 .ecore 文件已准备好用于生成 java 类。
【讨论】: