gpt4 book ai didi

java - 在Assignment和VariableDeclarationFragment ASTParser中解析类型绑定(bind)始终为null

转载 作者:行者123 更新时间:2023-12-02 05:05:58 27 4
gpt4 key购买 nike

我正在使用 ast 解析器 eclipse api 开发独立的 java 应用程序。我正在尝试提取字段和方法声明的类型绑定(bind)。这样做的逻辑位于我的解析器和 Visitor 类中(见下文)。

    ASTParser parser = ASTParser.newParser(AST.JLS8);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(parseFile);
parser.setUnitName(fileName);
parser.setResolveBindings(true);
parser.setEnvironment(null,null, null, true);
CompilationUnit compilationUnit = (CompilationUnit) parser.createAST(null); // parse
return compilationUnit;

以及访客类别

  for (final TypeDeclaration typeDeclaration : allTypes) {
typeDeclaration.accept(new ASTVisitor() {
@Override
public boolean visit(final Assignment node) {
addLogs("Assignment Node type :- "+node);
ITypeBinding iTypeBinding = node.resolveTypeBinding();
.............
}
});

@Override
public boolean visit(VariableDeclarationFragment node) {
if(node == null || node.getInitializer() == null) return super.visit(node);
final IVariableBinding iVariableBinding = node.resolveBinding();
if(iVariableBinding == null) return super.visit(node);
ITypeBinding iTypeBinding = node.getName().resolveTypeBinding();
..............
}
});

但是解析绑定(bind)始终为空,因此我无法获取变量名称并完全限定变量的类类型。

提前致谢。

最佳答案

在 ASTParser setEnvironment(classPath,sourcePath,contentType,true) 中设置环境。这里classPath是源类文件位置,sourcePath是源java文件位置,内容类型是UTF-8。

关于java - 在Assignment和VariableDeclarationFragment ASTParser中解析类型绑定(bind)始终为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27780298/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com