Reputation: 83123
I've been programming in Java for a while, and I've just come across this syntax for the first time:
public Object getSomething(){return something;};
What's interesting me is the final semicolon. It doesn't seem to be causing a compiler error, and as far as I know isn't generating runtime errors, so it seems to be valid syntax. When would I use this syntax? Or is it just something that is allowed but generally not used?
Upvotes: 17
Views: 11301
Reputation: 7490
A semicolon is interpreted as an empty statement, which is permissible whereever a statement is permissible.
EmptyStatement:
;
As Java specification says
http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.6
Upvotes: 0
Reputation: 199264
Or is it just something that is allowed but generally not used?
Yeap, that's it. It is valid Java but doesn't do anything:
public class X {
;;;;;;;;;;;;;;;;;;
;;;;;
;
}
Upvotes: 9
Reputation: 993961
It's allowed by the grammar as a concession to harmless syntax errors, but it's not generally used and doesn't mean anything different (than leaving the semicolon out).
Just as a };
inside a method (such as after an if
block) is a null statement and is allowed, an errant semicolon outside a method is considered a null declaration and is allowed.
Specifically, the following production from the Java Language Specification allows this:
ClassBodyDeclaration: ; [static] Block ModifiersOpt MemberDecl
Upvotes: 19
Reputation: 351566
It's simply an empty statement - it is most likely a typo.
Consider the fact that in all C-based languages, a statement is terminated with a semicolon. A hanging semicolon like this simply terminates the current statement which in this case is nothing.
Upvotes: 11