con*_*ile 3 java annotations annotation-processing
我有一节课:
public class StartPagePresenter extends AbstractPresenter<String> {
...
}
Run Code Online (Sandbox Code Playgroud)
使用Java Annotation Processing我得到TypeElement了类:
TypeElement startPagePresenterType = // get the TypeElement of StartPagePresenter
Run Code Online (Sandbox Code Playgroud)
现在我需要获得完成的超类:
startPagePresenterType.getSuperclass();
Run Code Online (Sandbox Code Playgroud)
然后我试着检查超类是否具有正确的类型:
if ( !startPagePresenterType.getSuperclass().toString().equals(
AbstractPresenter.class.getCanonicalName()) ) {
...
}
Run Code Online (Sandbox Code Playgroud)
这是问题所在:AbstractPresenter.class.getCanonicalName()导致:
core.mvp.AbstractPresenter
Run Code Online (Sandbox Code Playgroud)
并startPagePresenterType.getSuperclass().toString()导致:
core.mvp.AbstractPresenter<java.lang.String>
Run Code Online (Sandbox Code Playgroud)
当你比较这些字符串时,它们永远不会相等,尽管超类是相同的.
如何在startPagePresenterType.getSuperclass()没有通用块的情况下获取超类?
我找到了答案:
TypeMirror superClassTypeMirror = startPagePresenterType.getSuperclass();
TypeElement superClassTypeElement =
(TypeElement)((DeclaredType)superClassTypeMirror).asElement();
Run Code Online (Sandbox Code Playgroud)
而已!superClassTypeElement然后是TypeElement超级班.
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |