我运行一个由我自己编写的注释处理器,根据带注释的类生成一些新的java代码.以下是我试图获取当前处理类的超类名称.
TypeMirror superTypeMirror = typeElement.getSuperclass();
final TypeKind superClassName = superTypeMirror.getKind();
log("A==================" + superClassName.getClass());
log("B==================" + superClassName.getDeclaringClass());
Run Code Online (Sandbox Code Playgroud)
typeElement返回注释处理器正在处理的当前类.我想知道这个类扩展了哪些类以及这个类实现了哪些类.我使用的方法根本没用.
Thankx
如果我正确理解了这个问题,那 Types.directSupertypes()就是你需要的方法.
它将首先返回直接超类的类型,然后是(直接)实现的接口,如果有的话.
无论它们是代表超类还是超级接口,您都应该能够将它们转换DeclaredType为具有asElement()方法的方法,该方法可用于将事物查询为简单且完全限定的名称.
所以你会有这样的事情:
for (TypeMirror supertype : Types.directSupertypes(typeElement)) {
DeclaredType declared = (DeclaredType)supertype; //you should of course check this is possible first
Element supertypeElement = declared.asElement();
System.out.println( "Supertype name: " + superTypeElement.getSimpleName() );
}
Run Code Online (Sandbox Code Playgroud)
上面的工作如果typeElement是a TypeMirror,如果它是a TypeElement,你可以直接通过简单地调用typeElement.getSuperclass()和typeElement.getInterfaces()单独(而不是Types.directSupertypes())来获取超类和超接口,但是其余的过程是相同的.
| 归档时间: |
|
| 查看次数: |
2289 次 |
| 最近记录: |