2013-01-13 200 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 ...