0
如何在EMF(Eclipse建模框架)中獲得「哪種類型的引用將引用特定的類對象」?有時對象將引用3或4個引用類型。我想獲得爲該特定對象引用的引用數量。 或 如何獲得父物品子類在EMFEMF中的引用類型
如何在EMF(Eclipse建模框架)中獲得「哪種類型的引用將引用特定的類對象」?有時對象將引用3或4個引用類型。我想獲得爲該特定對象引用的引用數量。 或 如何獲得父物品子類在EMFEMF中的引用類型
有沒有直接的辦法讓子類的列表特定EClass
。你必須自己做這項工作。基本上通過所有類別的所有註冊軟件包並測試繼承樹:
/**
* Returns a list of all <em>known</em> sub-classes for the specified class.
*
* @param cls the super-class
* @return list of all sub-classes - possibly <code>null</code>
*/
public static Collection<EClass> getSubClasses(EClass cls) {
if (SUB_CLASSES.containsKey(cls)) return SUB_CLASSES.get(cls);
Collection<EClass> l = null;
final Registry registry = EPackage.Registry.INSTANCE;
for (final Object v : registry.values()) {
if (!(v instanceof EPackage)) {
continue;
}
final EPackage ep = (EPackage) v;
for (final EClassifier c : ep.getEClassifiers()) {
if (!(c instanceof EClass)) {
continue;
}
final EClass cl = (EClass) c;
if (cl.getESuperTypes().contains(cls)) {
if (l == null) {
l = new ArrayList<EClass>();
}
l.add(cl);
}
}
}
SUB_CLASSES.put(cls, l);
return l;
}
static final Map<EClass, Collection<EClass>> SUB_CLASSES = new HashMap<EClass, Collection<EClass>>();