gpt4 book ai didi

java - 如何在 JDT/ASTVisitor() 中存储值?

转载 作者:行者123 更新时间:2023-12-01 14:55:08 25 4
gpt4 key购买 nike

我有一个代码可以检测源中方法的调用起始位置和长度,如下所示。

我需要将这些数据存储在 ASTVisitor() 之外,但使用 Final int 时,出现错误。

如何在 ASTVisitor() 中存储值?

public void setPositionFinder(String methodName) throws JavaModelException
{
//findMethod(methodName);
IType type = this.javaProject.findType(this.className);
ICompilationUnit unit = type.getCompilationUnit();
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(unit);
parser.setResolveBindings(true);
CompilationUnit cunit = (CompilationUnit) parser.createAST(null);
//ASTNode root = parser.createAST(null);

final String name = this.newMethodName;
final int startPosition = -1;
final int length = -1;

cunit.accept(new ASTVisitor() {
public boolean visit(MethodInvocation methodInvocation)
{
String methodName = methodInvocation.getName().toString();
System.out.println(methodName);
if (methodName.equals(name))
{
// ERROR!
startPosition = methodInvocation.getStartPosition();
length = methodInvocation.getLength();
System.out.printf("startPosition %d - Length %d", startPosition, length);
}
return false;
}
});
}

enter image description here

最佳答案

starPositionlength变量声明为类的静态成员变量。然后您可以从 ASTVisitor 内部类内部进行访问。将 setPositionFinder 方法更改为静态也可能是首选,以便可以以静态方式调用它。

关于java - 如何在 JDT/ASTVisitor() 中存储值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14372095/

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