2015-04-28 41 views
2

我有一个类:从TypeElement获取超类没有泛型?

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

使用Java注解处理我的类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()。等于( AbstractPresenter.class.getCanonicalName() –

+0

getSuperclass之类没有一个方法,另一方面,getCanonicalName – confile

回答

5

我找到了答案:

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

这就是它! superClassTypeElement然后是超类的TypeElement