2014-09-30 4 views
2

주석 프로세서를 쓰고 있습니다. 어떻게 배열의 타입을 얻을 수 있습니까?자바 주석 프로세서에서 배열 형식 가져 오기

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

가 어떻게 배열의 유형을받을 수 있나요은? 당신이 할 수있는, 당신이 배열 형 알고 나면

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

'요소'유형은 무엇입니까? –

+0

요소는 'VariableElement' – sockeqwe

+0

배열의 첫 번째 요소에 대한 검사를 수행합니다 ... – StackFlowed

답변

4

:

는 기본적으로 나는 @MyAnnotation 주석 모든 요소를 ​​반복하고 나는 배열은 배열의 형태, 그런 일에 따라 특별한 뭔가를 할 것입니다 유형을 ArrayType으로 변경하십시오.

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

ArrayType 그렇게

asArrayType.getComponentType(); 

구성 요소 유형을 얻을하는 getComponentType() 방법이있다.

그런 다음 프로세스를 반복하여 구성 요소 유형의 TypeKind을 가져올 수 있습니다.

+0

감사합니다! 그게 정확히 내가 찾고 있었던거야. – sockeqwe