java - 在没有泛型的情况下从 TypeElement 获取父类(super class)?

标签 java annotations annotation-processing

我有一个类:

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

使用 Java Annotation Processing 我得到了类的 TypeElement:

TypeElement startPagePresenterType = // get the TypeElement of StartPagePresenter

现在我需要获取完成的父类(super class):

startPagePresenterType.getSuperclass();

然后我尝试检查父类(super class)是否具有正确的类型:

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

这里是问题所在:AbstractPresenter.class.getCanonicalName() 导致:

core.mvp.AbstractPresenter

startPagePresenterType.getSuperclass().toString()导致:

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

当您比较这些字符串时,尽管父类(super class)相同,但它们永远不会相等。

如何在没有通用 block 的情况下从 startPagePresenterType.getSuperclass() 获取父类(super class)?

最佳答案

我找到了答案:

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

就是这样! superClassTypeElement就是父类(super class)的TypeElement

关于java - 在没有泛型的情况下从 TypeElement 获取父类(super class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29921101/

相关文章:

java - 如何在 SapToolbarControl 中单击 Menu 或 ButtonAndMenu 类型的按钮?

java - 使用异常过滤器和 expectedExceptions 注释的 Seam 单元测试

hibernate - 如何让 spring 注入(inject)我的 EntityManager?

java - AbstractProcessor 可以检测带注释的方法是否存在编译错误?

java - eclipse java注解处理

java - 在 Java 中连接 WAV 文件

java - servlet的filter.destroy()方法的api描述

java - 我应该始终使我的 java 代码线程安全,还是出于性能原因仅在需要时才这样做?

spring - JPA/JTA/@Transactional Spring 注解

java - 如何从 Java 中的注释处理器获取项目的工作目录