【问题标题】:Indicating that a switch case falls through [duplicate]表示开关盒通过[重复]
【发布时间】:2020-02-08 19:51:12
【问题描述】:

一个案例落入下一个案例,可能表示错误,但有时是故意的;如果是这样,最好将其标记为这样,这对人类和编译器都有好处。

前者可以通过注释来完成:

        switch (s.charAt(i)) {
        case '-':
            sign = true;
            // fallthru
        case '+':
            i++;
            break;
        }

我希望 javac 会注意到评论并感到满意,但不,它仍然会警告失败。

有什么推荐的方法来满足 javac 这个特定实例是故意的,同时为程序的其余部分保留警告?

【问题讨论】:

    标签: java switch-statement compiler-warnings suppress-warnings fall-through


    【解决方案1】:

    如果您无论如何要在当前案例之后执行下一个案例,那么最好将两个案例简单地合并为一个案例......因为不同案例的全部目的是它们本质上是非交叉的.

    【讨论】:

    • 有时一种情况是另一种情况的子集;见上面的例子。当然,该特定示例仅涉及复制一行代码,因为我在这里选择了一个非常小的代码以提高可读性,但也可能存在代码复制更大的情况。
    • 在这种情况下,最好的选择是有非交叉案例,但如果你想让一个案例落入另一个案例,那么假设第一个案例调用一个方法,然后在内部调用其他一些在下一种情况下也会调用该方法。这将保持案例不交叉但同时满足两种方法并给出一个案例属于另一个案例的观点。
    • 这将是 一个 选项,这是肯定的。忽略为此确切目的提供的语言功能将是最佳选项,这是我不同意的观点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多