我有一个类:
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/