有人知道在Eclipse的内容帮助中将this
关键字(Java)标记为static final
的原因吗? final
对我来说很有意义,但是为什么static
吗?
屏幕截图是使用Eclipse 2020-03制作的,但是多年来我一直在观察这种行为。
最佳答案
这样做的代码在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
。至于为什么选择它,代码没有给出任何理由。