0
EMF (Eclipse Modeling Framework)에서 "어떤 유형의 참조가 특정 클래스 객체를 참조 할 수 있습니까?" 객체가 3 또는 4 참조 유형을 참조하는 경우도 있습니다. 그 특정 개체에 대한 참조 번호를 얻고 싶습니다. 또는 어떻게EMF에서 참조 유형
EMF (Eclipse Modeling Framework)에서 "어떤 유형의 참조가 특정 클래스 객체를 참조 할 수 있습니까?" 객체가 3 또는 4 참조 유형을 참조하는 경우도 있습니다. 그 특정 개체에 대한 참조 번호를 얻고 싶습니다. 또는 어떻게EMF에서 참조 유형
특정 EClass
에 대한 하위 클래스의 목록을 얻을 수있는 직접적인 방법이 없습니다 EMF에 부모 개체에 대한 하위 클래스를 얻을 수 있습니다. 너는 너 자신 일해야 할 것이다. 기본적으로 모든 등록 된 패키지의 모든 클래스를 살펴보고 상속 트리를 테스트하십시오.
/**
* 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>>();