gpt4 book ai didi

java - FieldDeclaration 到 IField - 从 FieldDeclaration 获取 IBinding

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:16 25 4
gpt4 key购买 nike

如何将 FieldDeclaration(类型:ASTNode)转换为 IField(类型:JavaElement)。是否可以从 FieldDeclaration ASTNode 获取绑定(bind),就像对于 MethodDeclaration 节点的 node.resolveBinding() 一样。

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

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 插件是你的 friend ! :-) 在 ASTView 中,您可以看到绑定(bind)可用于 VariableDeclarationFragment 但不可用于 FieldDeclaration。

从 FieldDeclaration 获取绑定(bind)

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

关于java - FieldDeclaration 到 IField - 从 FieldDeclaration 获取 IBinding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11131793/

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