我有一个班级:
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 :(得分:8)
我找到了答案:
TypeMirror superClassTypeMirror = startPagePresenterType.getSuperclass();
TypeElement superClassTypeElement =
(TypeElement)((DeclaredType)superClassTypeMirror).asElement();
那就是它! superClassTypeElement
然后是超类的TypeElement
。