Java "this" -ключевое слово, помеченное как stati c в помощнике по содержимому eclipse - PullRequest
19 голосов
/ 05 мая 2020

Кто-нибудь знает причину, по которой ключевое слово this (Java) помечено как static final в помощнике по содержанию в Eclipse? final имеет смысл для меня, но почему static?

Screenshot Eclipse

Снимок экрана был сделан с помощью Eclipse 2020-03, но я наблюдаю такое поведение уже много лет.

Ответы [ 2 ]

15 голосов
/ 10 мая 2020

Код, выполняющий это, находится в 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, что жестко кодирует дисплей статических c и окончательных оверлейных изображений. Таким образом, они всегда отображаются для this.

Почему это было выбрано, код не указывает причины.

0 голосов
/ 06 мая 2020

Две причины. 1) this нельзя переназначить и 2) вы находитесь внутри конструктора, а не обычного метода.

...