Когда вы положили точку с запятой после закрытия метода?
Я программировал в Java некоторое время, и я впервые встретил этот синтаксис:
public Object getSomething(){return something;};
Что интересно, это конечная точка с запятой. Кажется, что это не вызывает ошибки компилятора, и, насколько я знаю, это не создает ошибки времени выполнения, поэтому кажется, что это синтаксис. Когда я буду использовать этот синтаксис? Или это просто что-то, что разрешено, но обычно не используется?
Ответы
Ответ 1
Это разрешено грамматикой как уступка безвредным синтаксическим ошибкам, но она обычно не используется и не означает ничего другого (чем оставить точку с запятой).
Точно так же, как };
внутри метода (например, после блока if
) является нулевым оператором и разрешен, ошибочная точка с запятой вне метода считается нулевым объявлением и разрешена.
В частности, следующее производство из Java Language Specification позволяет:
ClassBodyDeclaration:
;
[static] Block
ModifiersOpt MemberDecl
Ответ 2
Это просто пустое утверждение - это, скорее всего, опечатка.
Рассмотрим тот факт, что во всех языках на основе C оператор заканчивается точкой с запятой. Висячая точка с запятой, как это, просто заканчивает текущее утверждение, которое в этом случае ничего.
Ответ 3
Или это только что разрешено, но обычно не используется?
Yeap, это он. Он действителен Java, но ничего не делает:
public class X {
;;;;;;;;;;;;;;;;;;
;;;;;
;
}