Frage

Wir sind immer gelehrt, um sicherzustellen, verwenden wir ein brechen in switch-Anweisungen Durchfall zu vermeiden.

Die Java-Compiler über diese Situationen warnen uns zu helfen, nicht trivial zu machen (aber drastische) Fehler.

Ich habe jedoch verwendet Fall Fall-through als Merkmal (wir haben es nicht zu bekommen, in hier, aber es bietet eine sehr elegante Lösung).

Allerdings spuckt der Compiler massive Mengen von Warnungen aus, die Warnungen verschleiern, die ich brauche zu wissen. Ich weiß, wie ich kann den Compiler ändern, um alle Durchfall Warnungen zu ignorieren, aber ich möchte diese Basis auf einer Methode-by-Methode implementieren, einen Ort zu vermeiden fehlt, wo ich nicht für Durchfall die Absicht hatte, passieren.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Wenn Sie wirklich, wirklich müssen dies tun, und Sie sind sicher, dass Sie nicht einen Fehler zu machen, besuchen Sie das @ SuppressWarnings Anmerkung . Ich nehme an, in Ihrem Fall müssen Sie

@SuppressWarnings("fallthrough")

Andere Tipps

Ist die Anmerkung @SuppressWarnings ( javadoc ), was Sie suchen?

Zum Beispiel:

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

andere Antwort Abwicklung über SuppressWarnings :

@SuppressWarnings("fallthrough")

Versuchen Sie, alle Durchfall Warnung auf der Compiler-Ebene zu unterdrücken ist eine schlechte Sache: wie Sie erklärt haben, die Fälle, in denen Sie durch die Warnung passieren sind eindeutig identifiziert. Somit sollte es explizit im Code geschrieben werden (die @SuppressWarnings("fallthrough") Annotation mit einem Optionnal Kommentar ist willkommen). Dadurch werden Sie immer noch den Durchfall Warnung, wenn Sie wirklich eine Pause irgendwo elese in Ihrem Code vergessen hat.

Sie können eine Struktur ‚wenn‘ Aussagen anstelle des Schalters erstellen. Vielleicht nicht so optisch ansprechend aber sein weder warnt supression.

@SuppressWarnings("fallthrough")

Java hat immer den C-Stil von switch-Anweisungen, wo Sie brauchen, um explicititly aus einem Schalter zu brechen, wenn Sie möchten einfach durch fallen und den Code im Fall unten auszuführen. Dies kann gefährlich natürlich sein und Fehler dieser Art können sehr hart sein, aufzuspüren. Im folgende Beispiel Fall 1 fehlt eine Pause:

@SuppressWarnings("fallthrough")
public void fallthroughTest(int i)
{
    switch (i)
    {
        case 1:
            // Execute both 1 and 2
        case 2:
            // Execute only 1
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top