从typeelement获取超类而不使用泛型?

8aqjt8rx  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(238)

我有一门课:

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() 没有通用块?

93ze6v8z

93ze6v8z1#

我找到了答案:

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

就这样! superClassTypeElement 那就是 TypeElement 超一流的。

相关问题