2013-01-13 54 views
0

我想比较if-子句中的eCore-数据类型和eCore-类。是这样的:比较Ecore类和类型

如果(ENT ==“实体”){}

“实体”是心魄级和“ENT”这个类的一个实际的对象。

对于eCore数据类型也是同样的问题。

如果(ent.eType == “EBoolean”){}

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

类同此:

如果(ent.name.toString.equals( “实体”)){}或eType.name.toString.equals( “EBoolean”),但仅用于一个临时解决方案我。

是否有另一种可能的更专业的解决方案来解决这个问题?

+0

对于类我发现了一个可以使用instanceof。但对于我还不知道的类型。 if(ent instanceof Entity){} – user1974084

回答

1

您是否为您的EMF模型生成了Java类?如果是的话,比instanceof应该工作。

switch ent { 
    Entity : { 
    ... 
    } 
} 

如果你想给的EClass实例以外还有你产生EPackage常量可以使用比较。这将是这样的:

if (ent.eClass == MyEcorePackage::Entity) { 
    ... 
} 
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 ...