如何将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相同的结果。
答案 0 :(得分:5)
像往常一样ASTView插件是你的朋友! :-)在ASTView中,您可以看到VariableDeclarationFragment可以使用绑定,但FieldDeclaration没有。
从FieldDeclaration获取绑定