我正试图从我的ECore模型中创建一些Java类。在这个模型中,一些类必须实现Iterable<Something>
。为了实现这一点,我添加了一个EC类Iterable
,并将其Instance Type Name
设置为java.lang.Iterable
。这阻止了ECore代码生成器为Iterable
生成代码,同时仍然允许我将其作为ESuper Types
用于我想要实现此接口的类
这样做对吗?
这种方法的问题是,所有编辑器(我尝试过"Sample Reflective eCore Editor"one_answers"Generic EMF Form Editor")都无法编辑模型的实例。这两个编辑器都无法找到Iterable
类型,并显示错误"Class‘Iterable’is a unkown classer"。
对此有解决办法吗?
不,我认为这不对。对于任何想要添加外部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
{...