有谁知道为什么 this
关键字(Java)被标记为 static final
在Eclipse的内容辅助中?final
我觉得很有道理,但为什么 static
?
这个截图是用Eclipse 2020-03做的,但是我观察这个行为已经很多年了,有谁知道为什么这个关键字(Java)在Eclipse的内容辅助中被标记为static final?
做这个的代码是在 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
.
至于为什么选择这个,代码没有给出任何理由。
有两个原因。1) this
不能重新分配,2)你是在一个构造函数里面,而不是一个普通的方法。