Java "this"--在eclipse内容辅助中被标记为静态的关键字。

问题描述 投票:2回答:1

有谁知道为什么 this 关键字(Java)被标记为 static final 在Eclipse的内容辅助中?final 我觉得很有道理,但为什么 static?

Screenshot Eclipse

这个截图是用Eclipse 2020-03做的,但是我观察这个行为已经很多年了,有谁知道为什么这个关键字(Java)在Eclipse的内容辅助中被标记为static final?

java eclipse static this
1个回答
15
投票

做这个的代码是在 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

作为旗帜 JavaElementImageDescriptor 这是对静态和最终覆盖图像的显示进行硬编码。所以这些图片总是显示给 this.

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.