遇到IJavaElement / IType(类的)问题 - 如何获取超类的IType

时间:2012-02-12 07:07:04

标签: java eclipse-plugin superclass

在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());

他们都没有制作超类

2 个答案:

答案 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());