我有一堂课:

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()获取超类?

最佳答案

我找到了答案:

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

而已! superClassTypeElement然后是超类的TypeElement

07-26 06:17