多重返回和最终值确定
一种特殊的编码实践涉及具有多个返回语句的函数,如下面的代码片段所示:
String test() { try { return "1"; } finally { return "2"; } }
鉴于这种构造,问题就出现了:Java 语言规范 (JLS) 是否在所有 Java 虚拟机 (JVM) 中一致地定义最终返回值?
根据 JLS,具有多个 return 语句的函数返回的精确值是显式指定的。在提供的示例中,返回值被明确定义为“2”。这意味着,如果任何 JVM 偏离此规范,则被认为不符合 JLS。
需要注意的是,大多数编译器都会针对这种非常规做法发出警告或错误消息。例如,Eclipse 会错误地标记返回块永远不会被执行。尽管如此,JLS 优先于编译器警告。
虽然 JLS 规定了具有多个返回值的函数的返回值,但出于清晰度和可维护性方面的考虑,它强烈不鼓励使用它们。依赖此类构造通常被认为是不好的做法,开发人员应该致力于更简单和可读的代码。
以上是Java语言规范如何定义具有多个返回语句的函数的最终返回值?的详细内容。更多信息请关注PHP中文网其他相关文章!