У меня есть следующий класс, который не компилируется:
public class C {
public String toString() {
return "Test " + super;
}
}
Это дает ошибку компиляции Syntax error on token "super", invalid Expression
.
Кто-нибудь знает, почему происходит эта ошибка компилятора?Предполагаемый эффект будет "Test " + super.toString()
, что прекрасно компилируется, но почему приведенный выше пример не компилируется?Разве здесь не должны применяться нормальные правила Java для конкатенации строк?
Еще более удивительно, что следующий код прекрасно компилируется:
public String toString2() {
return "Test " + this;
}
Так почему this
работает в конкатенации строк, тогда как super
нет?
Я использую openjdk 11.0.3 2019-04-16
, на всякий случай, если это имеет значение (в чем я сомневаюсь).