2010-04-27 82 views
13

我用Java编写了一会,我刚刚遇到这种语法首次:什么时候你会在方括号后面加分号?

public Object getSomething(){return something;}; 

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

+1

注意:同样适用于类 - 您可以在'C++'-style中使用';'终止它们;使用直接移植的代码时会派上用场。 – vaxquis 2015-07-12 16:41:23

回答

17

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

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

具体而言,从Java Language Specification以下生产允许这样的:

ClassBodyDeclaration: 
    ; 
    [static] Block 
    ModifiersOpt MemberDecl 
11

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

考虑到在所有基于C的语言中,语句都以分号结尾的事实。像这样的分号只是简单地终止了当前的声明,在这种情况下什么也不是。

+0

所以我可以在技术上添加任意数量的分号,而不是声明的中间位置? – froadie 2010-04-27 19:34:11

+3

@froadie - 是的,你可以做到这一点。 – 2010-04-27 19:36:27

8

或者只是东西是允许的,但一般不采用?

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

public class X { 
    ;;;;;;;;;;;;;;;;;; 
    ;;;;; 
    ; 
} 
相关问题