Java 表示开关箱已损坏

Java 表示开关箱已损坏,java,switch-statement,compiler-warnings,suppress-warnings,fall-through,Java,Switch Statement,Compiler Warnings,Suppress Warnings,Fall Through,从一个案件到下一个案件,可能表明有错误,但有时是故意的;如果是这样,那么最好将其标记为“是”,这样对人类和编译器都有好处 前者可以通过注释完成: switch (s.charAt(i)) { case '-': sign = true; // fallthru case '+': i++; break; } 我希望javac会注意到这条

从一个案件到下一个案件,可能表明有错误,但有时是故意的;如果是这样,那么最好将其标记为“是”,这样对人类和编译器都有好处

前者可以通过注释完成:

        switch (s.charAt(i)) {
        case '-':
            sign = true;
            // fallthru
        case '+':
            i++;
            break;
        }
我希望javac会注意到这条评论并感到满意,但不,它仍然警告说会出现错误


建议用什么方法来让javac确信这个特定实例是故意的,同时为程序的其余部分保留警告?

如果您打算在当前案例之后执行下一个案例,那么最好只是将两个案例合并为一个。。。因为不同案例的整体目的是它们在本质上是不相交的。

有时一个案例是另一个案例的子集;见上面的例子。当然,这个特定的例子只涉及到复制一行代码,因为我在这里选择了一行非常小的代码以提高可读性,但也可能存在代码复制更大的情况。在这种情况下,最好的选择是使用非交叉的情况,但如果您希望一种情况落入另一种情况,然后让我们假设第一个案例调用一个方法,然后在内部调用另一个方法,该方法在下一个案例中也被调用。这将保持案例的非交叉性,同时满足两种方法的要求,并给出一种观点,即一个案例属于另一个案例。当然,这将是一种选择。我不同意这样一种观点,即忽略为此目的提供的语言特性是最好的选择。