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

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

public Object getSomething(){return something;}; 

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

Ответы

Ответ 1

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

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

В частности, следующее производство из Java Language Specification позволяет:

ClassBodyDeclaration:
  ; 
  [static] Block
  ModifiersOpt MemberDecl

Ответ 2

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

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

Ответ 3

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

Yeap, это он. Он действителен Java, но ничего не делает:

public class X  {
    ;;;;;;;;;;;;;;;;;;
    ;;;;;
    ;
}