gpt4 book ai didi

java - ASTNode - QualifiedName.getFullyQualifiedName() 不返回包名称

转载 作者:行者123 更新时间:2023-12-02 13:33:02 25 4
gpt4 key购买 nike

我编写了一个插件,它可以在我的光标所在的编辑器中返回该代码的完全限定名称。

当光标位于jButton[i].setForeground(Color.WHITE);行内的WHITE上时,我需要获取以下信息: java.awt.Color.White.

我想知道为什么 qualifiedName.getFullyQualifiedName() 返回 Color.WHITE 而没有包的名称。

除了从 qualifiedName.resolveBinding().getKey() 返回的内容中提取名称之外,是否有可能获取包的名称,即 Ljava/awt/Color;。白色)Ljava/awt/Color; ?

这就是我获取qualifiedName的方式:

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart editor = page.getActiveEditor();
ITextSelection sel = (ITextSelection) editor.getSite().getSelectionProvider().getSelection();
ITypeRoot root = JavaUI.getEditorInputTypeRoot(editor.getEditorInput());
ICompilationUnit cU = (ICompilationUnit) root.getAdapter(ICompilationUnit.class);
CompilationUnit compilationUnit = parse(cU);
NodeFinder finder = new NodeFinder(compilationUnit, sel.getOffset(),
sel.getLength());
QualifiedName qualifiedName = (QualifiedName) finder.getCoveringNode();

感谢任何帮助。

最佳答案

您可以自己构造包含包的限定名称。这是一个基本示例。您可能需要添加代码来应对其他情况。

IBinding nameBinding = qualifiedName.resolveBinding();
if (nameBinding != null && nameBinding.getKind() == IBinding.VARIABLE) {
IVariableBinding variableBinding = (IVariableBinding) nameBinding;
String result = variableBinding.getDeclaringClass().getQualifiedName() + '.' + variableBinding.getName();
}

分析 AST 绑定(bind)时的一点警告。 始终检查绑定(bind)是否为null。我怎么强调都不为过。

关于java - ASTNode - QualifiedName.getFullyQualifiedName() 不返回包名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43116822/

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