Java“this”-关键字在eclipse内容辅助中标记为静态

use*_*698 18 java eclipse static this

有人知道在 Eclipse 的内容帮助中将this关键字 (Java) 标记为的原因static final吗?final对我来说很有意义,但为什么static呢?

截图 Eclipse

该屏幕截图是使用 Eclipse 2020-03 制作的,但我多年来一直在观察这种行为。

gre*_*449 14

这样做的代码在 org.eclipse.jdt.internal.ui.text.java.ParameterGuesser

// add 'this'
if (currentType != null && !(fEnclosingElement instanceof IMethod && Flags.isStatic(((IMethod) fEnclosingElement).getFlags()))) {
  String fullyQualifiedName= currentType.getFullyQualifiedName('.');
  if (fullyQualifiedName.equals(expectedType)) {
    ImageDescriptor desc= new JavaElementImageDescriptor(JavaPluginImages.DESC_FIELD_PUBLIC, JavaElementImageDescriptor.FINAL | JavaElementImageDescriptor.STATIC, JavaElementImageProvider.SMALL_SIZE);
    res.add(new Variable(fullyQualifiedName, "this", Variable.LITERALS, false, res.size(), new char[] {'.'}, desc));  //$NON-NLS-1$
  }
}
Run Code Online (Sandbox Code Playgroud)

该代码中的关键是

JavaElementImageDescriptor.FINAL | JavaElementImageDescriptor.STATIC
Run Code Online (Sandbox Code Playgroud)

作为对JavaElementImageDescriptor静态和最终叠加图像的显示进行硬编码的标志。所以这些总是显示为this.

至于为什么选择它,代码没有给出任何理由。

  • 不,我想不出理由。这对我来说似乎没有意义,而且我在 Java 语言规范中没有看到任何内容。您可以尝试将此报告为 Eclipse Bugzilla (https://bugs.eclipse.org/bugs) 中的错误 (3认同)