获取Java注释处理器中的数组类型

时间:2014-09-30 15:15:11

标签: java annotations annotation-processing

我正在写一个注释处理器。我怎样才能获得数组的类型?

@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.?
    }
}

1 个答案:

答案 0 :(得分:5)

一旦知道它是一种数组类型,就可以将其类型转换为ArrayType

ArrayType asArrayType = (ArrayType) element.asType();

ArrayType有一个getComponentType()方法,所以

asArrayType.getComponentType();

获取组件类型。

然后,您可以重复此过程以获取组件类型TypeKind