Java EclipseEMF-有没有一种方法可以在不同的Eclipse插件中引用作为模型一部分的类,而不必存储tostring()?
eclipse插件模型中的一个类需要引用完全不同的模型和插件中的另一个类 为此,我发现了这样一个建议,即使用edatatype并用我需要链接的类型初始化它的实例类。但是,当我尝试在不同的模型中链接到我的类时,它保存了类的tostring,如下面的示例所示Java EclipseEMF-有没有一种方法可以在不同的Eclipse插件中引用作为模型一部分的类,而不必存储tostring()?,java,eclipse,eclipse-rcp,emf,Java,Eclipse,Eclipse Rcp,Emf,eclipse插件模型中的一个类需要引用完全不同的模型和插件中的另一个类 为此,我发现了这样一个建议,即使用edatatype并用我需要链接的类型初始化它的实例类。但是,当我尝试在不同的模型中链接到我的类时,它保存了类的tostring,如下面的示例所示 <tasks description="" id="p1.tsk4" label="1" type="place" time="10"> <requiredCapabilityDescriptor>cod.gen.i
<tasks description="" id="p1.tsk4" label="1" type="place" time="10">
<requiredCapabilityDescriptor>cod.gen.impl.CapabilityDescriptorImpl@78483404 (description: , id: cap2, label: ) (parent: null)</requiredCapabilityDescriptor>
<involvedResource>cod.gen.impl.ResourceDescriptorImpl@2839ac4c (description: null, id: null, label: null) (cad: null, material: null, pointySurface: <unset>, sharpEdges: <unset>, thumbnail: null, weight: <unset>) (changeCost: null, generic: <unset>, investCost: null, manufacturer: null)</involvedResource>
</tasks>
cod.gen.impl。CapabilityDescriptorImpl@78483404(描述:,id:cap2,标签:)(父项:null)
cod.gen.impl。ResourceDescriptorImpl@2839ac4c(描述:null,id:null,标签:null)(cad:null,材料:null,点表面:未设置>,锐角:未设置>,缩略图:null,重量:未设置>)(变更成本:null,通用:未设置>,投资成本:null,制造商:null)
在本例中,我链接到两个不同的外部类CapabilityDescriptorImpl和ResourceDescriptorImpl。正如您所看到的,tostring是存储的,这在存储和可读性方面很不方便,而且我也不太确定这种情况下的一致性处理(我是指删除、编辑引用的实例)。根据线程,由于我选择了可序列化的数据类型,所以编写了tostring,我尝试了使其不可序列化,但没有成功
因此,我尝试了另一种使用电子引用的方法,它将要保存的字符串减到最小
<tasks description="" id="p1.tsk4" label="1" type="place" time="10">
<requiredCapabilityDescriptor xsi:type="CoD:CapabilityDescriptor" description="" id="cap2" label=""/>
<involvedResource xsi:type="CoD:ResourceDescriptor"/>
</tasks>
它在可读性和存储方面要好得多,但我真的怀疑它是一个实际的引用,因为它不包含任何可以引用原始实例的内容。实际上,我确信它不是指原始对象,因为它没有显示任何EconContainer。再次是一致性问题
我能想到的最后一个选项是存储被引用对象的URI,但在这种情况下,我必须自己管理所有的一致性问题
因此,我的问题是“有没有更好的方法来实现这种外部类引用?”受其启发。我已经做了以下工作:
<c xmlns:c="platform:/resource/my_project/Resource/c.xsd">
<c:res C:id="r" C:label="r">
<C:des>My.des#//@rDes.0</C:des>
</C:resources>
</C:c>
My.des#/@rDes.0
这指向另一个名为My.des的XMI文件,它的灵感来自于。我已经做了以下工作:
<c xmlns:c="platform:/resource/my_project/Resource/c.xsd">
<c:res C:id="r" C:label="r">
<C:des>My.des#//@rDes.0</C:des>
</C:resources>
</C:c>
My.des#/@rDes.0
指向另一个名为My.des的XMI文件