我用Java编写了一会,我刚刚遇到这种语法首次:什么时候你会在方括号后面加分号?
public Object getSomething(){return something;};
有趣的是我最终的分号。它似乎不会导致编译器错误,并据我所知不会产生运行时错误,所以它似乎是有效的语法。我什么时候可以使用这种语法?或者它只是被允许但通常不被使用的东西?
我用Java编写了一会,我刚刚遇到这种语法首次:什么时候你会在方括号后面加分号?
public Object getSomething(){return something;};
有趣的是我最终的分号。它似乎不会导致编译器错误,并据我所知不会产生运行时错误,所以它似乎是有效的语法。我什么时候可以使用这种语法?或者它只是被允许但通常不被使用的东西?
语法允许它作为无害语法错误的让步,但通常不会使用它,并不意味着任何不同之处(比将分号留出)。
正如};
内部的方法(如if
块之后)是一个空语句,并且被允许,外的方法被认为是无效的声明,并且被允许一个错误的分号。
具体而言,从Java Language Specification以下生产允许这样的:
ClassBodyDeclaration: ; [static] Block ModifiersOpt MemberDecl
这只是一个空的陈述 - 它很可能是一个错字。
考虑到在所有基于C的语言中,语句都以分号结尾的事实。像这样的分号只是简单地终止了当前的声明,在这种情况下什么也不是。
所以我可以在技术上添加任意数量的分号,而不是声明的中间位置? – froadie 2010-04-27 19:34:11
@froadie - 是的,你可以做到这一点。 – 2010-04-27 19:36:27
或者只是东西是允许的,但一般不采用?
就是这样。它是有效的Java,但不做任何事情:
public class X {
;;;;;;;;;;;;;;;;;;
;;;;;
;
}
注意:同样适用于类 - 您可以在'C++'-style中使用';'终止它们;使用直接移植的代码时会派上用场。 – vaxquis 2015-07-12 16:41:23