在eclipse插件中,假设我持有Java类的IJavaElement(也为IType)
org.eclipse.jdt.core.IType

如何获得其超类的IType(或其他一些对象表示形式,如IJavaElement)?
我不想使用newSupertypeHierarchy(),因为这太多了。
我只想要直接的,超一级的超类...
我尝试了以下所有方法
(在“ subType”下面的代码中,是我要获取其超类的类的IJavaElement表示形式):

System.out.println("subType root: "+((IType) subType).getTypeRoot().getElementName());
System.out.println("subType primary: "+subType.getPrimaryElement().getElementName());
System.out.println("subType ansc: "+((IType) subType).getAncestor(0));
System.out.println("subType dclr:"+((IType) subType).getDeclaringType());
System.out.println("subType parnt: "+((IType) subType).getParent().getElementName());


他们都没有产生超一流的

最佳答案

有IType.getSuperclassName(),但这只会为您提供超类的SimpleName。问题是,超类可能不在同一项目中,甚至可能不在某个库jar中。这就是为什么需要更多资源进行计算的原因。

AFAIK这是获取超类的IType的最佳方法:

public static IType getSupertypeOf(final IType type, IProgressMonitor monitor) throws CoreException {
    return type.newSupertypeHierarchy(monitor).getSuperclass(type);
}

10-06 10:46