首页 > 解决方案 > 如何在 Java 中声明无法访问的代码?

问题描述

我在一个switch语句中有一个复杂的情况,它(碰巧)总是突然终止(返回,或中断或......)。我想放一些类似 lint 的 /*UNREACHABLE*/声明,以便向任何阅读代码的人表明它不会落入下一个案例(Java 中的一个常见错误)。我正在寻找一种更正式的方式来表明这一点,理想情况下,如果它不是无法访问的话会导致编译器警告或错误。有任何想法吗?

    switch (x) {
        case 1:
           if (...) {
             switch (.) {
                ...
             }
           } else {
             ...
           }
           /*UNREACHABLE*/
        case 2:
           ...
    }

该代码是真正无法访问的,Java 编译器知道它是,所以我不能在那里放置任何(正常)代码,因为它会被编译器标记为无法访问的代码。

标签: java

解决方案


如果您愿意接受狂野的黑客攻击,您可以case在有效的 s 之间插入未使用的 s:

switch (x) {
    case 1:
       if (...) {
         switch (.) {
            ...
         }
       } else {
         ...
       }
    case -1:
       /*UNREACHABLE*/
       throw new RuntimeException("nope");

    case 2:
       ...
}

我个人认为我不会使用它,但它应该可以工作。


推荐阅读