2015-04-28 104 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