答案 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
作为对静态和最终叠加图像的显示进行硬编码的标志。因此,这些始终显示为 。JavaElementImageDescriptor
this
至于为什么选择它,代码没有给出任何理由。
答案 2
原因有二。1)不能被重新分配,2)你在构造函数中,而不是一个普通的方法。this
推荐
-
为什么在java中不允许分配到“this”? 我从编译器那里得到的错误是“赋值的左侧必须是变量”。我的用例是深度复制,但并不真正相关。 在 C++ 中,可以分配给 。 原因在于技术原因还是概念原因? 到目前为止,我的猜测 - 以随
-
将“this”与方法一起使用(在Java中) 在Java中使用“this”和方法怎么样?它是可选的还是在某些情况下需要强制使用它? 我遇到的唯一情况是在类中调用方法中的方法。但这是可选的。这是一个愚蠢的例子,只是为了说明我的意思
-
-
-
Java “this”关键字在 eclipse 内容辅助中标记为静态 有谁知道为什么关键字(Java)在Eclipse中被标记为内容助手的原因? 对我来说是有道理的,但为什么? 屏幕截图是用Eclipse 2020-03制作的,但我多年来一直在观察这种行为。
标签