如何禁止特定函数的Java编译器警告

时间:2009-02-27 08:42:46

标签: java compiler-construction warnings compiler-warnings suppress-warnings

我们总是教会确保在switch语句中使用 break 以避免掉线。

Java编译器警告这些情况,以帮助我们避免犯下微不足道的(但是极其严重的)错误。

然而,我使用了案例属性作为一个功能(我们不必在这里进入它,但它提供了一个非常优雅的解决方案)。

然而,编译器会发出大量警告,这些警告可能会掩盖我需要了解的警告。我知道如何更改编译器以忽略所有直通警告,但我希望在逐个方法的基础上实现这一点,以避免错过我不希望发生跌倒的地方。

任何想法?

5 个答案:

答案 0 :(得分:37)

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

@SuppressWarnings("fallthrough")

答案 1 :(得分:4)

注释@SuppressWarningsjavadoc)您要找的是什么?

例如:

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

答案 2 :(得分:4)

完成关于SuppressWarnings的其他答案:

@SuppressWarnings("fallthrough")

尝试在编译器级别压制所有直通警告是一件坏事:正如您所解释的那样,您需要通过警告的情况会被清楚地识别出来。因此,它应该明确地写在代码中(欢迎使用带有选项注释的@SuppressWarnings("fallthrough")注释)。这样做,如果您真的忘记了代码中某处的中断,您仍然会收到拒绝警告。

答案 3 :(得分:1)

您可以创建一个'if'语句结构来代替switch。可能不会在视觉上令人愉悦,但也不是警告抑制。

答案 4 :(得分:0)

@SuppressWarnings("fallthrough")

Java始终遵循C风格的switch语句,除非您希望简单地完成并执行下面的代码,否则您需要明确地断开交换机。这当然是危险的,这种错误很难追查。在以下示例中,案例1没有中断:

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