我想用Eclipse EMF创建一个包含List
个String
个对象的类。我看到Ecore有一个EList
,但我无法更改列表的泛型类型。
知道怎么做吗?
答案 0 :(得分:16)
如果您要生成的代码为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>
答案 1 :(得分:6)
不确定您的问题是否得到了回答,以及您实际想要做什么。
如果你想从.ecore文件生成Java代码,那么我在这里使用Eclipse Juno的EMF样本生成模型编辑器(右键单击.ecore文件)提供一个例子。
也许这不是你想要的,但这可能对其他人有帮助。
假设您在生成的Java类MyClass中需要这样的方法:
<T extends String> EList<T> getListOfType(Class<T> T)
在Sample Ecore Model Editor中,您希望通过
实现How your method looks in the Ecore Editor单击箭头“T extends?”,单击“?”,在“属性”窗口中选择EClassifier和EString的下拉菜单,现在你会看到“T extends EString”
将getListOfType添加为EGeneric Return Type的“New Child”
打开EEList的箭头,在属性窗口中选择EType参数下拉菜单中的“T extends EString”
将getListOfType添加为“EParameter”的“新孩子”
现在您已准备好.ecore文件用于生成java类。