wake-up-neo.com

So unterdrücken Sie Java-Compiler-Warnungen für bestimmte Funktionen

Es wird immer gelehrt, sicherzustellen, dass wir eine break in switch-Anweisung verwenden, um ein Durchfallen zu vermeiden.

Der Java-Compiler warnt vor diesen Situationen, damit wir keine trivialen (aber drastischen) Fehler machen.

Ich habe jedoch Case-Through als Feature verwendet (wir müssen hier nicht darauf eingehen, aber es bietet eine sehr elegante Lösung). 

Der Compiler spuckt jedoch unzählige Warnungen aus, die Warnungen verschleiern könnten, die ich kennen muss. Ich weiß, wie ich den Compiler so ändern kann, dass er ALLE Fall-Through-Warnungen ignoriert. Ich möchte dies jedoch auf einer methodenbasierten Basis implementieren, um zu vermeiden, dass ein Ort verpasst wird, an dem ich keinen Fall hatte.

Irgendwelche Ideen?

24
Ron Tuffin

Wenn Sie dies wirklich tun müssen und sicher sind, dass Sie keinen Fehler machen, lesen Sie die Annotation @SuppressWarnings . Ich nehme an, Sie brauchen in Ihrem Fall

@SuppressWarnings("fallthrough")
37
starblue

Ist die Annotation @SuppressWarnings ( javadoc ) genau das, was Sie suchen?

Zum Beispiel:

@SuppressWarnings("unchecked")
public void someMethod(...) {
    ...
}
4
Romain Linsolas

Um andere Antworten zu SuppressWarnings zu vervollständigen:

@SuppressWarnings("fallthrough")

Versuchen Sie, die gesamte Durchfallwarnung auf Compiler-Ebene zu unterdrücken. Dies ist eine schlechte Sache: Wie Sie bereits erklärt haben, werden die Fälle, in denen Sie die Warnung durchlaufen müssen, eindeutig identifiziert. Daher sollte es explizit in den Code geschrieben werden (die @SuppressWarnings("fallthrough")-Annotation mit einem optionalen Kommentar ist willkommen). Auf diese Weise erhalten Sie immer noch die Warnmeldung, wenn Sie wirklich eine Unterbrechung irgendwo in Ihrem Code vergessen.

4
Nicolas

Sie könnten anstelle des Switches eine Struktur von 'if'-Anweisungen erstellen. Es mag zwar nicht so optisch ansprechend sein, aber auch keine Warnungsunterdrückung.

1
Maxwell
@SuppressWarnings("fallthrough")

Java hat immer den C-Stil von switch-Anweisungen befolgt, in denen Sie explizit aus einem Switch aussteigen müssen, es sei denn, Sie möchten einfach durchfallen und den Code im folgenden Fall ausführen. Dies kann natürlich gefährlich sein, und Fehler dieser Art können sehr schwer zu finden sein. Im folgenden Beispiel fehlt in Fall 1 eine Pause:

@SuppressWarnings("fallthrough")
public void fallthroughTest(int i)
{
    switch (i)
    {
        case 1:
            // Execute both 1 and 2
        case 2:
            // Execute only 1
    }
}
0
Jay