2015-04-28 2 views
2

У меня есть класс:Получите Суперкласс от TypeElement без Generic?

public class StartPagePresenter extends AbstractPresenter<String> { 
... 
} 

Использование Java аннотаций Processing Я получил TypeElement класса:

TypeElement startPagePresenterType = // get the TypeElement of StartPagePresenter 

Теперь мне нужно, чтобы получить супер класс, который делается с:

startPagePresenterType.getSuperclass(); 

Затем я попытался проверить, имеет ли суперкласс правильный тип:

if (!startPagePresenterType.getSuperclass().toString().equals(
    AbstractPresenter.class.getCanonicalName())) { 
... 
} 

Вот проблема: AbstractPresenter.class.getCanonicalName() приводит к:

core.mvp.AbstractPresenter 

и startPagePresenterType.getSuperclass().toString() приводит к:

core.mvp.AbstractPresenter<java.lang.String> 

Если сравнить эти строки, они никогда не равны, хотя супер классов одинаковы.

Как я могу получить суперкласс от startPagePresenterType.getSuperclass() без общего блока?

+0

Попробуйте startPagePresenterType.getSuperclass() getCanonicalName(). ToString(). Equals ( AbstractPresenter.class.getCanonicalName() –

+0

getSuperclass не имеет метод getCanonicalName – confile

ответ

5

Я нашел ответ:

TypeMirror superClassTypeMirror = startPagePresenterType.getSuperclass(); 
TypeElement superClassTypeElement = 
      (TypeElement)((DeclaredType)superClassTypeMirror).asElement(); 

Вот оно! superClassTypeElement - это TypeElement суперкласса.

Смежные вопросы