Java AnnotationProcessing-创建可执行元素

Java AnnotationProcessing-创建可执行元素,java,annotation-processing,Java,Annotation Processing,我正在使用检索annotationvalues。 返回的映射的键是扩展的内容。我可以迭代entrySet并检查每个键的名称,但这会导致丑陋的if-else级联 Map<? extends ExecutableElement, ? extends AnnotationValue> annotationValues = elementUtils.getElementValuesWithDefaults(annotationMirror); for (Map.Entry<?

我正在使用检索annotationvalues。 返回的映射的键是扩展的内容。我可以迭代entrySet并检查每个键的名称,但这会导致丑陋的if-else级联

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
    }
}           

Map您可以使用Runnable地图

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();
}
Map Map=newhashmap();
put(“method1”,新的Runnable(){…});
put(“method2”,新的Runnable(){…});
put(“method3”,新的Runnable(){…});
对于(Map.Entry:…){
get(entry.getKey().getSimpleName()).run();
}
我猜您希望将条目传递到方法中,因此您可能希望使用自定义接口而不是可运行接口