编程语言
首页 > 编程语言> > java – FieldDeclaration到IField – 从FieldDeclaration获取IBinding

java – FieldDeclaration到IField – 从FieldDeclaration获取IBinding

作者:互联网

如何将FieldDeclaration(类型:ASTNode)转换为IField(类型:JavaElement).是否有可能从FieldDeclaration ASTNode获取绑定,就像node.resolveBinding()和MethodDeclaration节点一样.

需要:我正在访问具有公共常量的类中的FieldDeclaration节点,并且想要在项目中搜索该字段的引用.我正在使用JDT的SearchEngine.为此,我想创建一个搜索模式,如下所示:

SearchPattern.createPattern(iField, IJavaSearchConstants.REFERENCES);

我已经将此作为对我questions之一的评论,但没有得到相同的答案.将其作为单独的问题发布.

在此先感谢您的回答.

回答Deepak的回答.

使用您的方法,我可以检索JavaElement,如下所示

List<VariableDeclarationFragment> fragments = node.fragments();
VariableDeclarationFragment fragment = fragments.get(0);
IJavaElement fieldElement = fragment.resolveBinding().getJavaElement();

如果我传递此IJavaElement来创建搜索模式而不是IField,它将返回与IField相同的结果.

解决方法:

像往常一样ASTView插件是你的朋友! :-)在ASTView中,您可以看到绑定可用于VariableDeclarationFragment,但不适用于FieldDeclaration.

从FieldDeclaration获取绑定

>获取FieldDeclaration =>的’片段’你现在有一堆VariableDeclarationFragment节点
>调用VariableDeclarationFragment#resolveBinding()(此方法继承自VariableDeclaration)

标签:java,abstract-syntax-tree,eclipse-jdt
来源: https://codeday.me/bug/20190620/1249186.html