Java EclassImpl setEPackage()
我需要使用一些emf代码,而不知道它是如何工作的。代码使用EcoreUtil.copy(…)克隆类。我在我创建的类中添加了一个电子课堂,如下所示:Java EclassImpl setEPackage(),java,emf,Java,Emf,我需要使用一些emf代码,而不知道它是如何工作的。代码使用EcoreUtil.copy(…)克隆类。我在我创建的类中添加了一个电子课堂,如下所示: EClassImpl c = (EClassImpl)EcoreFactory.eINSTANCE.createEClass(); System.out.println(c.getEPackage().getEFactoryInstance()); @Override protected EClass eStatic
EClassImpl c = (EClassImpl)EcoreFactory.eINSTANCE.createEClass();
System.out.println(c.getEPackage().getEFactoryInstance());
@Override
protected EClass eStaticClass() {
EClassImpl c = (EClassImpl)EcoreFactory.eINSTANCE.createEClass();
return c;
}
还可以像这样重写eStaticClass():
EClassImpl c = (EClassImpl)EcoreFactory.eINSTANCE.createEClass();
System.out.println(c.getEPackage().getEFactoryInstance());
@Override
protected EClass eStaticClass() {
EClassImpl c = (EClassImpl)EcoreFactory.eINSTANCE.createEClass();
return c;
}
现在我有一个问题,复制例程试图使用:
eClass.getEPackage().getEFactoryInstance().create(eClass);
它返回null指针异常,因为getEPackage()返回null。不幸的是,EPackage似乎没有设置器,因此如何设置它?我自己设法解决了这个问题,下面是我的解决方案,以防其他人遇到此问题:
EPackageImpl epi = (EPackageImpl)EcoreFactory.eINSTANCE.createEPackage();
c.eBasicSetContainer(epi, EcorePackage.ECLASSIFIER__EPACKAGE, null);
我也有同样的问题。请参见他们如何使用API作为示例
samplePackage
.getEClassifiers()
.add(userClass);
这会将类添加到包中,反之亦然。谢谢,如果我再次遇到它,我会尝试一下您的解决方案,它看起来更干净