开发者 / 未分类 · 2009年 10月 28日

由CompilationUnit得到SuperClass的方法

做BTF项目的时候, 要判断一个类是否继承了某个指定类.

由于类还是在Eclipse的JDT中, 没有被Load, 所以java.lang.Class.getSuperclass()不中了.

查找一番原来可以通过CompilationUnit获取org.eclipse.jdt.core.IType,

然后IType.newSupertypeHierarchy(*)得到ITypeHierarchy, 继而就能用ITypeHierarchy.getSuperclass(IType)得到其超类了.

IType[] types = ((ICompilationUnit)javaElement).getTypes();
    if(null != types && types.length > 0){
         ITypeHierarchy typeHierarchy = types[0].newSupertypeHierarchy(null);
             IType superclass = typeHierarchy.getSuperclass(types[0]);
                if(superclass instanceof ResolvedBinaryType){
                 …

                  }
         }
}