我想比较if子句中的eCore-datatypes和eCore-classes。如下所示:
if (ent == "Entity"){}
"Entity“是eCore-Class,"ent”是这个类的实际对象。
同样的问题也适用于eCore数据类型。
if(ent.eType == "EBoolean"){}
我该怎么做呢?目前,我只将名称与字符串操作进行比较。
与此类似:
if(ent.name.toString.equals("Entity")) {}或eType.name.toString.equals("EBoolean"),但这对我来说只是一个临时的解决方案。
有没有其他更专业的解决方案来解决这个问题?
发布于 2013-02-13 04:38:33
您是否为EMF模型生成了Java类?如果是,那么instanceof应该可以工作。
switch ent {
Entity : {
...
}
}如果要将EClass实例与生成的EPackage中的常量进行比较,可以使用。这大概是这样的:
if (ent.eClass == MyEcorePackage::Entity) {
...
}发布于 2014-03-03 23:27:15
class类型的第一个筛选器EObject。通过typeof(className)将其进一步拆分。
for (clazz : p.EClassifiers.filter(typeof(EClass))) {
if (clazz.name == typeof(ClassA).simpleName) { clazz.callMethodA;
} else if (clazz.name == typeof(ClassB).simpleName) { clazz.callMethodB; }
}对EDataTypes执行相同的操作...
https://stackoverflow.com/questions/14303543
复制相似问题