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