我正在使用Eclipse JDT AST Parser(3.10.0)来解析各种源代码文件。
这就是我如何初学解析器:
ASTParser parser = ASTParser.newParser(AST.JLS8);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setBindingsRecovery(true);
parser.setResolveBindings(true);
parser.setStatementsRecovery(true);
parser.setSource(source.toCharArray());
parser.setUnitName(filename);
parser.setEnvironment(classPath.toArray(new String[classPath.size()]), sources, new String[]{"UTF-8"}, true);
final CompilationUnit cu = (CompilationUnit) parser.createAST(null);
类路径由maven依赖插件创建。
这对大多数表达式都有效,但似乎有lambda表达式的问题
Optional<Address> first = adr.stream().filter(
a -> a.getId().longValue() == contactAddress.getAddressId().longValue()
).findFirst();
评估比较的两面,每种类型都解析为null
。在没有周围lambda表达式的情况下解析相同的代码会导致每边long
。
有没有办法解决lambda表达式中的bindng?