首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JavaPoet生成开关语句

用JavaPoet生成开关语句
EN

Stack Overflow用户
提问于 2016-11-20 18:51:27
回答 1查看 1.3K关注 0票数 8

我正在开发一个用java编写的注释处理器。我正在使用JavaPoet生成一些代码行。我必须生成一个“开关”语句。现在我使用以下代码:

代码语言:javascript
复制
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();

若要生成以下代码:

代码语言:javascript
复制
switch(eventType) {
    case XMLEvent.START_ELEMENT:
    break;
    case XMLEvent.END_ELEMENT:
    break;
    case XMLEvent.CDATA:
    case XMLEvent.CHARACTERS:
    break;
    default:
    break;
}

这是用javapoet生成开关语句的唯一方法,还是有更好的方法(使用beginControlFlow)来生成相同的代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-20 19:04:51

对于开关语句,JavaPoet中没有太多内容,所以您所拥有的可能是您所能做的最好的。请注意,如果您愿意,可以使用$>$<来调整缩进。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40708020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档