Когда бы вы поставили точку с запятой после закрывающей скобки метода?

Некоторое время я программировал на 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

Другие вопросы по тегам