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

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

public Object getSomething(){return something;}; 

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

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

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

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

 ClassBodyDeclaration: ; [static] Block ModifiersOpt MemberDecl 

这只是一个空洞的陈述 – 很可能是一个错字。

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

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

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

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