删除方法中源自Java JDT解析器中的字段变量的所有调用
我想检测并消除类中来自类类型/字段声明的方法的所有调用。我试图删除删除方法中源自Java JDT解析器中的字段变量的所有调用,java,eclipse,abstract-syntax-tree,eclipse-jdt,Java,Eclipse,Abstract Syntax Tree,Eclipse Jdt,我想检测并消除类中来自类类型/字段声明的方法的所有调用。我试图删除FieldDeclaration节点,但没有任何帮助。我试着胡乱摆弄绑定,但找不到任何有用的东西 比如说, import java.util.ArrayList; public class TestList implements Closeable { ArrayList<String> arrayListOne = new ArrayList<String>(); p
FieldDeclaration
节点,但没有任何帮助。我试着胡乱摆弄绑定,但找不到任何有用的东西
比如说,
import java.util.ArrayList;
public class TestList implements Closeable {
ArrayList<String> arrayListOne = new ArrayList<String>();
public void add2arrayList() {
String arg01;
boolean b1;
b1 = arrayListOne.add((arg01 = new String()));
return;
}
}
import java.util.ArrayList;
公共类TestList实现了Closeable{
ArrayList ArrayList=新的ArrayList();
public void add2arrayList(){
字符串arg01;
布尔b1;
b1=arrayListOne.add((arg01=newstring());
返回;
}
}
如果这是进入JDT解析器的代码,我不希望在输出中看到“add”调用
任何关于如何解决这个问题的意见都将受到高度赞赏。我来自计算机科学的一个非常不同的领域,因此我对
JDT
的了解非常业余,非常欢迎详细的解释。在访问AST之前存储对您的成员FieldDeclaration
s的绑定引用,并使用它们来比较SimpleName
节点绑定
有关详细方法,请参阅以下链接:
如果您通过
ASTVisitor
浏览AST,则add
(属于arrayListOne.add(…
)将在visit(SimpleName节点)
中进行访问,node.resolveBinding()
将是IMethodBinding
的一个实例(其方法类似于getDeclaringClass()
)。但是您必须显示代码,以便有人能在您遇到困难时帮助您。谢谢!我可以按照您建议的方式进行操作。您认为从getDeclaringClass()可以方法,我可以推断它是否源自字段变量?如果是,您有什么建议吗?我将尝试在这里合并一些更相关的代码。您是指字段arrayListOne
?我猜在arrayListOne.add中(…
节点arrayListOne
和add
将具有相同的父节点。这里节点arrayListOne
的绑定实例是IVariableBinding
,它具有方法isField()
。我使用了getParent()但遗憾的是,这似乎没有什么帮助。我无法从MethodInvocation/MethodDeclaration中的任何位置访问声明变量