views:

2592

answers:

4

We are always taught to make sure we use a break in switch statements to avoid fall-through.

The Java compiler warns about these situations to help us not make trivial (but drastic) errors.

I have, however, used case fall-through as a feature (we don't have to get into it here, but it provides a very elegant solution).

However the compiler spits out massive amounts of warnings that may obscure warnings that I need to know about. I know how I can change the compiler to ignore ALL fall-through warnings, but I would like to implement this on a method-by-method basis to avoid missing a place where I did not intend for fall-through to happen.

Any Ideas?

+11  A: 

If you really, really must do this, and you are sure you are not making a mistake, check out the @SuppressWarnings annotation. I suppose in your case you need

@SuppressWarnings("fallthrough")
starblue
+4  A: 

Is the annotation @SuppressWarnings (javadoc) what you are looking for?

For example:

@SuppressWarnings("unchecked")
public void someMethod(...) {
    ...
}
romaintaz
I think it must be @SuppressWarnings("fallthrough") instead of "unchecked" (http://www.java-tips.org/java-se-tips/java.lang/introducing-annotations.html)
Tobias Schulte
+2  A: 

To complete other answer about SuppressWarnings:

@SuppressWarnings("fallthrough")

Try to supress all the fall-through warning at the compiler level is a bad thing: as you've explained, the cases where you need to pass through the warning are clearly identified. Thus, it should be explicitly written in the code (the @SuppressWarnings("fallthrough") annotation with an optionnal comment is welcome). Doing so, you'll still have the fall-through warning if you really forget a break somewhere elese in your code.

Nicolas
With double quotes...
Tom Hawtin - tackline
oops, thanks, i've changed it.
Nicolas
A: 

Java doesn't seem to have it but in some languages (like C# and D) you can end a case section with a goto case n; case n: that makes the fall-through explicit and also prevents adding or reordering cases from mucking up stuff.

BCS