2013-09-16 2 views
0

EMF (Eclipse Modeling Framework)에서 "어떤 유형의 참조가 특정 클래스 객체를 참조 할 수 있습니까?" 객체가 3 또는 4 참조 유형을 참조하는 경우도 있습니다. 그 특정 개체에 대한 참조 번호를 얻고 싶습니다. 또는 어떻게EMF에서 참조 유형

답변

0

특정 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>>();