我想比较if-clauses中的eCore-datatypes和eCore-classes。像这样:
if(ent ==“Entity”){}
“Entity”是eCore-Class并且“ent”这个类的实际Object。
同样的问题适用于eCore数据类型。
if(ent.eType ==“EBoolean”){}
我该怎么做?目前我只将名称与字符串操作进行比较。
与此类似:
if(ent.name.toString.equals(“Entity”)){}或eType.name.toString.equals(“EBoolean”)但这对我来说只是一个临时解决方案。
这个问题还有其他可能更专业的解决方案吗?
答案 0 :(得分:1)
您是否为EMF模型生成了Java类?如果是,则应该使用instanceof。
switch ent {
Entity : {
...
}
}
如果要比较EClass实例,而不是生成的EPackage中的常量,则可以使用。那将是这样的:
if (ent.eClass == MyEcorePackage::Entity) {
...
}
答案 1 :(得分:0)
首先过滤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
...