我需要使用一些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);


这会将类添加到包中,反之亦然。

07-26 07:45