gpt4 book ai didi

java - 使用字符串文字设置 EMF EStructuralFeature

转载 作者:行者123 更新时间:2023-11-30 03:21:27 24 4
gpt4 key购买 nike

是否可以使用字符串文字设置 EMF 中 EStructuralFeature 的值?

示例:

someObject.set(intFeature, "1") 
someObject.set(stringFeature, "1")

在此之后,我希望 intFeature 的值是值为 1 的整数,并且 stringFeature 的值包含“1”。

我怀疑这样的功能是可用的,因为 EStructuralFeature::defaultValueLiteral 是一个字符串,所以它也必须以某种方式进行解析。

最佳答案

要完成此类操作,您必须处理元模型和 EFactory。通过从EStructuralFeature中查看setDefaultValue,可以看到EStructuralFeature类型的EFactory用于构建值(仅当 EStructuralFeature 类型是 EDatatype 时)。

这是一个一般片段(我们假设我们有一个 EObject eobj):

// We get the estructuralfeature
EStructuralFeature feature = eobj.eClass().getEStructuralFeature("myfeature");
// Is the feature type "primitive"
if (feature.getEType() instanceof EDataType) {
EDataType dtype = (EDataType)ea.getEType();
// We get the EFactory
EFactory factory = feature.getEType().getEPackage().getEFactoryInstance();
eobj.eSet(feature, factory.createFromString(dtype, "mystringvalue"));
}

这是一个 UML 示例:

Property p = UMLFactory.eINSTANCE.createProperty();
EStructuralFeature ea = p.eClass().getEStructuralFeature("lower");
... // if and stuffs
EFactory factory = ea.getEType().getEPackage().getEFactoryInstance();
p.eSet(ea, factory.createFromString((EDataType)ea.getEType(), "1"));

关于java - 使用字符串文字设置 EMF EStructuralFeature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31221774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com