0

我想比较 if 子句中的 eCore 数据类型和 eCore 类。像这样的东西:

if (ent == "Entity"){}

“实体”是 eCore-Class,“ent”是此类的实际对象。

eCore Datatypes 也有同样的问题。

if(ent.eType == "EBolean"){}

我怎样才能做到这一点?目前我只将名称与字符串操作进行比较。

与此类似:

if(ent.name.toString.equals("Entity")) {} 或 eType.name.toString.equals("EBoolean") 但这对我来说只是一个临时解决方案。

对于这个问题,还有其他可能的更专业的解决方案吗?

4

2 回答 2

1

您是否为 EMF 模型生成了 Java 类?如果是,那么 instanceof 应该可以工作。

switch ent {
  Entity : {
     ...
  }
}

如果您想比较 EClass 实例而不是生成的 EPackage 中的常量,您可以使用。那将是这样的:

if (ent.eClass == MyEcorePackage::Entity) {
   ...
}
于 2013-02-12T20:38:33.057 回答
0

首先过滤 EObject 的类型class。进一步拆分它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对...做同样的事情

于 2014-03-03T15:27:15.353 回答