JavaParser 为了支持Java 10,进行了一些重构,在下面的“pre 3.5.14”部分可以看到旧的方法。
JavaParser 在实现上使用了一个后处理器,将抽象语法树(AST)转换为所需Java版本的AST,并选择一个验证器来查找AST中的问题。
在开发上,可以通过ParserConfiguration
中的一个简单设置来完成:
JavaParser.getStaticConfiguration().setLanguageLevel(ParserConfiguration.LanguageLevel.JAVA_9);
使用静态导入来简化代码:
import static com.github.javaparser.ParserConfiguration.LanguageLevel.*;
JavaParser.getStaticConfiguration().setLanguageLevel(JAVA_9);
从3.5.15版本开始,JavaParser还提供了一些伪语言级别:
POPULAR
:发布时最流行的Java版本。LATEST
:JavaParser支持的最新版本。RAW
: 跳过后处理和验证,以获得一定的速度提升。
Pre 3.5.14(旧版内容)
当在3.1.4版本中添加对Java 9文件的解析支持时,并没有默认启用它。默认语言级别设置为8,打算在JDK 9发布时将其设置为9。那么,如何获得支持呢?通过更改对AST的验证。这些验证在哪里设置?在ParserConfiguration
中。
简易模式
简易API使用静态方法,因此它使用的配置也是静态的:
Java9Validator java9Validator = new Java9Validator();
ParserConfiguration configuration = JavaParser.getStaticConfiguration();
configuration.setValidator(java9Validator);
JavaParser.parse("module x {}");
或者,作为一行代码:
JavaParser.getStaticConfiguration().setValidator(new Java9Validator());
专业模式
专业API使用JavaParser
的实例,配置放入构造函数中:
Java9Validator java9Validator = new Java9Validator();
ParserConfiguration configuration = new ParserConfiguration();
configuration.setValidator(java9Validator);
JavaParser javaParser = new JavaParser(configuration);
javaParser.parse(ParseStart.COMPILATION_UNIT, Providers.provider("module x {}"));
或者,作为一行代码:
JavaParser javaParser = new JavaParser(new ParserConfiguration().setValidator(new Java9Validator()));
下面适用于每个主要的Java版本:
JavaParser javaParser = new JavaParser(new ParserConfiguration().setValidator(new Java1_0Validator()));