我正在写一个注释处理器。我怎样才能获得数组的类型?
@MyAnnotation
int[] iArray;
@MyAnnotation
boolean[] bArray;
@MyAnnotation
FooClass[] fooArray;
据我所知,我可以检查它是否是这样的数组:
if (element.asType().getKind() == TypeKind.ARRAY) {
// it's an array
// How to check if its an array of boolean or an array integer, etc.?
}
如何获取数组的类型?
基本上我遍历所有用@MyAnnotation
注释的元素,我会根据数组的类型对数组做一些特殊的处理,如下所示:
for (Element element : enviroment.getElementsAnnotatedWith(MyAnnotation.class)) {
if (element.getKind() != ElementKind.FIELD)
continue;
if (element.asType().getKind() == TypeKind.ARRAY) {
// it's an array
// How to distinguish between array of boolean or an array integer, etc.?
}
}
答案 0 :(得分:5)
一旦知道它是一种数组类型,就可以将其类型转换为ArrayType
。
ArrayType asArrayType = (ArrayType) element.asType();
ArrayType
有一个getComponentType()
方法,所以
asArrayType.getComponentType();
获取组件类型。
然后,您可以重复此过程以获取组件类型TypeKind
。