Когда бы вы поставили точку с запятой после закрывающей скобки метода?
Некоторое время я программировал на Java, и я впервые столкнулся с этим синтаксисом:
public Object getSomething(){return something;};
Что меня интересует, так это последняя точка с запятой. Похоже, что это не вызывает ошибку компилятора, и, насколько я знаю, не генерирует ошибки времени выполнения, поэтому, похоже, это правильный синтаксис. Когда бы я использовал этот синтаксис? Или это просто то, что разрешено, но обычно не используется?
3 ответа
Это допускается грамматикой как уступка безвредным синтаксическим ошибкам, но обычно не используется и не означает ничего другого (кроме пропуска точки с запятой).
Просто как };
внутри метода (например, после if
block) является пустым оператором и допускается, ошибочная точка с запятой вне метода считается пустым объявлением и допускается.
В частности, следующее производство из спецификации языка Java позволяет это:
ClassBodyDeclaration: ; [static] Block ModifiersOpt MemberDecl
Это просто пустое утверждение - скорее всего, это опечатка.
Примите во внимание тот факт, что во всех языках на основе C оператор завершается точкой с запятой. Точка с запятой, подобная этой, просто завершает текущую инструкцию, которая в этом случае является ничем.
Или это просто то, что разрешено, но обычно не используется?
Да, вот и все. Это допустимая Java, но ничего не делает:
public class X {
;;;;;;;;;;;;;;;;;;
;;;;;
;
}
Точка с запятой интерпретируется как пустое утверждение, которое допустимо везде, где допустимо утверждение.
EmptyStatement:
;
Как сказано в спецификации Java
http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html