我有一堂课:
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
。