我需要使用一些emf代码,而又不知道它是如何工作的。该代码使用EcoreUtil.copy(...)来克隆类。我将EClass添加到我创建的类中,如下所示:
EClassImpl c = (EClassImpl)EcoreFactory.eINSTANCE.createEClass();
System.out.println(c.getEPackage().getEFactoryInstance());
并且像这样覆盖eStaticClass():
@Override
protected EClass eStaticClass() {
EClassImpl c = (EClassImpl)EcoreFactory.eINSTANCE.createEClass();
return c;
}
现在我有一个问题,复制例程尝试使用:
eClass.getEPackage().getEFactoryInstance().create(eClass);
返回一个空指针异常,因为getEPackage()返回空值。不幸的是,EPackage似乎没有二传手,那我该如何设置呢?
最佳答案
有同样的问题。在http://emfjson.org/docs/中查看他们如何使用API作为示例。
samplePackage
.getEClassifiers()
.add(userClass);
这会将类添加到包中,反之亦然。