Возникли проблемы с IJavaElement / IType (класса) - как получить IType суперкласса - PullRequest
0 голосов
/ 12 февраля 2012

В плагине eclipse, учитывая, что я держу IJavaElement (также IType) класса Java
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 ]

1 голос
/ 27 марта 2013

Существует IType.getSuperclassName () , но это просто даст вам SimpleName суперкласса. Проблема в том, что суперкласс может не входить в один и тот же проект или даже находиться в некотором библиотечном банке. Вот почему для расчета требуется больше ресурсов.

AFAIK, это лучший способ получить IType суперкласса:

public static IType getSupertypeOf(final IType type, IProgressMonitor monitor) throws CoreException {
    return type.newSupertypeHierarchy(monitor).getSuperclass(type);
}
0 голосов
/ 12 февраля 2012

Попробуйте это:

System.out.println("subType getSuperClass: "+((subType.class).getSuperClass().getName());
...