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

2022-09-02 22:11:54

有谁知道为什么关键字(Java)在Eclipse中被标记为内容助手的原因? 对我来说是有道理的,但为什么?thisstatic finalfinalstatic

Screenshot Eclipse

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


答案 1

执行此操作的代码位于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$
  }
}

该代码中的关键是

JavaElementImageDescriptor.FINAL | JavaElementImageDescriptor.STATIC

作为对静态和最终叠加图像的显示进行硬编码的标志。因此,这些始终显示为 。JavaElementImageDescriptorthis

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


答案 2

原因有二。1)不能被重新分配,2)你在构造函数中,而不是一个普通的方法。this