什么时候你会在一个方法关闭括号后放一个分号?

fro*_*die 15 java syntax

我已经用Java编程了一段时间,我第一次遇到这种语法:

public Object getSomething(){return something;}; 
Run Code Online (Sandbox Code Playgroud)

有趣的是我的最后一个分号.它似乎没有导致编译器错误,并且据我所知不会生成运行时错误,所以它似乎是有效的语法.我什么时候会使用这种语法?或者它只是允许但通常不使用的东西?

Gre*_*ill 19

语法允许它作为对无害语法错误的让步,但它通常不被使用,并不意味着任何不同(比将分号留下).

正如一个方法}; 内部(例如在一个if块之后)是一个空语句并且被允许,方法之外的错误分号被认为是空声明并且是允许的.

具体来说,Java语言规范的以下产品允许:

ClassBodyDeclaration:
  ; 
  [static] Block
  ModifiersOpt MemberDecl
Run Code Online (Sandbox Code Playgroud)


And*_*are 11

这只是一个空洞的陈述 - 很可能是一个错字.

考虑这样一个事实:在所有基于C语言中,语句以分号结束.像这样的悬挂分号只会终止当前的陈述,在这种情况下,这些陈述什么都不是.

  • @froadie - 是的,你可以这样做. (3认同)

Osc*_*Ryz 9

或者它只是允许但通常不使用的东西?

是的,就是这样.它是有效的Java,但没有做任何事情:

public class X  {
    ;;;;;;;;;;;;;;;;;;
    ;;;;;
    ;
}
Run Code Online (Sandbox Code Playgroud)