在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());
他们都没有制作超类
答案 0 :(得分:1)
IType.getSuperclassName(),但这只会为您提供超类的SimpleName。问题是,超类可能不在同一个项目中,甚至可能在某个库jar中。这就是为什么需要更多的资源来计算。
AFAIK这是获取超类的IType的最佳方式:
public static IType getSupertypeOf(final IType type, IProgressMonitor monitor) throws CoreException {
return type.newSupertypeHierarchy(monitor).getSuperclass(type);
}
答案 1 :(得分:0)
试试这个:
System.out.println("subType getSuperClass: "+((subType.class).getSuperClass().getName());