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

Я некоторое время программировал на Java, и я впервые столкнулся с этим синтаксисом:

public Object getSomething(){return something;}; 

Что меня интересует, так это последняя точка с запятой. Похоже, что это не вызывает ошибку компилятора, и, насколько я знаю, не генерирует ошибки времени выполнения, поэтому, похоже, это правильный синтаксис Когда бы я использовал этот синтаксис? Или это только то, что разрешено, но обычно не используется?

Ответы [ 4 ]

19 голосов
/ 27 апреля 2010

Это допускается грамматикой как уступка безвредным синтаксическим ошибкам, но обычно оно не используется и не означает ничего иного (кроме пропуска точки с запятой).

Так же, как }; внутри , метод (например, после блока if) является пустым оператором и допускается, ошибочная точка с запятой вне метода пустое объявление и разрешено.

В частности, следующее производство из Спецификации языка Java позволяет это:

ClassBodyDeclaration:
  ; 
  [static] Block
  ModifiersOpt MemberDecl
11 голосов
/ 27 апреля 2010

Это просто пустое утверждение - скорее всего, это опечатка.

Рассмотрим тот факт, что во всех языках на основе C оператор завершается точкой с запятой. Точка с запятой, подобная этой, просто завершает текущее утверждение, которое в этом случае является ничем.

9 голосов
/ 27 апреля 2010

Или это то, что разрешено, но обычно не используется?

Да, вот и все. Это допустимая Java, но ничего не делает:

public class X  {
    ;;;;;;;;;;;;;;;;;;
    ;;;;;
    ;
}
0 голосов
/ 24 марта 2019

Точка с запятой интерпретируется как пустое утверждение, которое допустимо везде, где допустимо утверждение.

EmptyStatement:
 ;

Как сказано в спецификации Java

http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...