2014-02-13 6 views
0

나는 Elements.getElementValuesWithDefaults을 사용하여 주석 값을 검색하고 있습니다. 반환 된 Map의 키는 ExecutableElement까지 확장됩니다. entrySet을 반복하고 각 키의 이름을 확인할 수는 있지만이 경우는 if-else-cascades가 생깁니다.AnnotationProcessing - create ExecutableElement

Map<? extends ExecutableElement, ? extends AnnotationValue> annotationValues = 
    elementUtils.getElementValuesWithDefaults(annotationMirror); 
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : annotationValues.entrySet()) { 
    if (entry.getKey().getSimpleName().contentEquals("method1")) { 
     // do something with value of method1 
    } else if (entry.getKey().getSimpleName().contentEquals("method2")) { 
     // do something with value of method2 
    } else if (entry.getKey().getSimpleName().contentEquals("method3")) { 
     // do something with value of method3 
    } 
}   

값을 얻기위한 키로 ExecutableElement를 만드는 쉬운 방법을 찾지 못했습니다. 누구 하나 알고 있니?

답변

1

실행 파일의지도를 사용할 수 있습니다.

Map<String, Runnable> map = new HashMap(); 
map.put("method1", new Runnable() { ... }); 
map.put("method2", new Runnable() { ... }); 
map.put("method3", new Runnable() { ... }); 

for (Map.Entry entry : ...) { 
    map.get(entry.getKey().getSimpleName()).run(); 
} 

Runnable 대신 사용자 지정 인터페이스가 필요할 수 있으므로 항목을 메서드에 전달하고 싶습니다.

+0

정확히 내가 생각한 것이 아니라 내 문제를 해결합니다. 감사! – lefloh