27

我们总是被教导要确保在 switch 语句中使用中断来避免失败。

Java 编译器会针对这些情况发出警告,以帮助我们避免犯微不足道的(但严重的)错误。

但是,我将使用案例失败作为一个功能(我们不必在这里深入探讨,但它提供了一个非常优雅的解决方案)。

但是,编译器会吐出大量警告,这些警告可能会掩盖我需要了解的警告。我知道如何更改编译器以忽略所有失败警告,但我想逐个方法实现这一点,以避免错过我不打算发生失败的地方。

有任何想法吗?

4

5 回答 5

40

如果您真的必须这样做,并且您确定自己没有犯错,请查看@SuppressWarnings 注释。我想在你的情况下你需要

@SuppressWarnings("fallthrough")
于 2009-02-27T08:49:21.800 回答
4

注释@SuppressWarnings( javadoc ) 是您要查找的吗?

例如:

@SuppressWarnings("unchecked")
public void someMethod(...) {
    ...
}
于 2009-02-27T08:49:58.523 回答
4

要完成有关的其他答案SuppressWarnings

@SuppressWarnings("fallthrough")

尝试在编译器级别抑制所有失败警告是一件坏事:正如您所解释的,清楚地确定了需要通过警告的情况。因此,它应该明确地写在代码中(@SuppressWarnings("fallthrough")带有可选注释的注释是受欢迎的)。这样做,如果您真的忘记了代码中其他地方的中断,您仍然会收到失败警告。

于 2009-02-27T08:56:06.247 回答
1

您可以创建一个“if”语句结构来代替开关。可能在视觉上不那么令人愉悦,但警告抑制也不是。

于 2011-08-05T15:46:07.173 回答
0
@SuppressWarnings("fallthrough")

Java 一直遵循 C 风格的 switch 语句,在这种情况下,您需要显式地跳出 switch,除非您希望简单地通过并执行以下案例中的代码。当然,这可能很危险,而且这类错误很难追查。在以下示例中,案例 1 缺少中断:

@SuppressWarnings("fallthrough")
public void fallthroughTest(int i)
{
    switch (i)
    {
        case 1:
            // Execute both 1 and 2
        case 2:
            // Execute only 1
    }
}
于 2016-05-13T11:32:23.630 回答