2016-11-20 8 views
5

के साथ स्विच स्टेटमेंट का जनरेशन मैं जावा में लिखे गए एनोटेशन प्रोसेसर पर काम कर रहा हूं। मैं कोड की कुछ पंक्तियां उत्पन्न करने के लिए जावापेट का उपयोग कर रहा हूं। मुझे एक 'स्विच' कथन उत्पन्न करना है।JavaPoet

switch(eventType) { 
    case XMLEvent.START_ELEMENT: 
    break; 
    case XMLEvent.END_ELEMENT: 
    break; 
    case XMLEvent.CDATA: 
    case XMLEvent.CHARACTERS: 
    break; 
    default: 
    break; 
} 

यह एक ही तरीका है javapoet साथ एक स्विच बयान उत्पन्न करने के लिए है या एक बेहतर तरीका (beginControlFlow उपयोग कर रहा है: निम्नलिखित कोड उत्पन्न करने के लिए

MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder("parseOnXml") 
    .addAnnotation(Override.class) 
    .addModifiers(Modifier.PUBLIC) 
    .addParameter(typeName(XmlBinderContext.class), "context") 
    .addParameter(typeName(XmlWrapperParser.class), "wrapper") 
    .addParameter(typeName(Integer.TYPE), "currentEventType") 
    .addJavadoc("create new object instance\n") 
    .returns(typeName(item.getElement())); 

... 

methodBuilder.beginControlFlow("switch(eventType)"); 
methodBuilder.addCode("case $T.START_ELEMENT:\n", XMLEvent.class); 
methodBuilder.addStatement("break"); 
methodBuilder.addCode("case $T.END_ELEMENT:\n", XMLEvent.class); 
methodBuilder.addStatement("break"); 
methodBuilder.addCode("case $T.CDATA:\n", XMLEvent.class); 
methodBuilder.addCode("case $T.CHARACTERS:\n", XMLEvent.class); 
methodBuilder.addStatement("break"); 
methodBuilder.addCode("default:\n"); 
methodBuilder.addStatement("break"); 
methodBuilder.endControlFlow(); 

: अब मैं निम्नलिखित कोड का उपयोग कर रहा) एक ही कोड उत्पन्न करने के लिए?

उत्तर

4

स्विच स्टेटमेंट्स के लिए जावापॉएट में बहुत कुछ नहीं है, तो आपके पास जो संभव है वह संभवतः आप कर सकते हैं। ध्यान दें कि यदि आप चाहें तो मामलों में इंडेंटेशन समायोजित करने के लिए आप $> और $< का उपयोग कर सकते हैं।