迭代器和ECore中的Iterable

时间:2012-02-16 18:59:03

标签: eclipse-emf eclipse-emf-ecore

我正在尝试从我的ECore模型创建一些Java类。在此模型中,某些类必须实现Iterable<Something>。为了实现这一目标,我添加了一个EClass Iterable并将其Instance Type Name设置为java.lang.Iterable。这可以防止ECore代码生成器生成Iterable的代码,同时仍然允许我使用ESuper Types来实现我想要实现此接口的类

这是正确的方法吗?

这种方法存在的问题是,所有编辑(我尝试过“Sample Reflective eCore Editor”和“Generic EMF Form Editor”都无法编辑模型的实例。两位编辑都找不到{{1输入并显示错误“Class'Iterable'是一个未知的分类器”。

是否有针对此的解决方法或解决方案?

1 个答案:

答案 0 :(得分:0)

不,我不认为这是对的。对于要添加外部Java接口的任何位置,应将@extends批注用于类注释部分。这样你的界面就不会在生成过程中被吹走。这是来自EMF书的第308页(第10.11节):

/**
 * <!-- begin-user-doc -->
 * A representation of the model object 'PurchaseOrder'.
 * @extends Serializable
 * <!-- end-user-doc -->
 *
 *

 * @model
 * @generated
 */
public interface PurchaseOrder extends EObject, Serializable
 {...