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

时间:2010-04-27 19:29:37

标签: java syntax

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

public Object getSomething(){return something;}; 

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

4 个答案:

答案 0 :(得分:19)

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

就像<{1}} 里面一样,一个方法(例如在};块之后)是一个空语句并被允许,一个错误的分号之外一个方法被认为是一个空声明,并且是允许的。

具体来说,Java Language Specification的以下作品允许这样做:

if

答案 1 :(得分:11)

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

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

答案 2 :(得分:9)

  

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

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

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

答案 3 :(得分:0)

分号被解释为空语句,在允许任何语句的情况下都是允许的。

EmptyStatement:
 ;

如Java规范所述

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