java - 为什么方法在语句之后需要一个始终返回 true 的返回值?

标签 java if-statement

为什么这个方法(测试)需要一个返回值(它总是为真)?

public boolean test() { //This method must return a result of type boolean
    if (true) {
       return true; // always return true
    }
}

当我添加返回值时,它会警告为“死代码”。那么,为什么不首先接受 test() 方法

public boolean test(int i) {
   if (true) {
      return true;
    } else { //Dead code
      return false;
    }
 }

最佳答案

方法返回分析不会分析 if 条件以查看它是否始终为 true 或 false,因为通常它不会是编译时常量(否则您不会编写一个 if 在第一位)。它只是看到有一个 if 可以或不可以采用,如果不采用,则该方法不会返回值,因此会出现错误。

死代码分析是在方法返回分析的单独传递中完成的,方法返回分析会进行一些更深入的分析,以查看分支条件。

我完全不知情的猜测是这种行为是编译器开发方式的产物;方法返回分析是编译的重要组成部分,可确保您最终获得有效的程序,因此是首先实现的核心功能之一。死代码分析是一个“可有可无”,因此后来使用更复杂的算法实现了(因为核心编译器位已在该阶段完成)

关于java - 为什么方法在语句之后需要一个始终返回 true 的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4562045/

相关文章:

java - bitmap.compress(Bitmap.compressFormat.JPEG,100, baos) 给我 java.lang.OutOfMemoryError

java - 正则表达式来找到这种模式?

java - 在 Java 9 中处理 PrintGCApplicationStoppedTime 标志

java - 根据规范,在以毫秒为单位的日期上,evaluatePreconditions 的正确行为是什么?

MySQL 存储过程 Case 语句语法错误 - 续

java 。 String 内的 if 语句作为函数参数

java - 处理资源 xml 文件

php mysql - 搜索字段和类别(如果不为空)

PHP if 语句。如果为真则显示和图像

javascript - 使用 JS 是否有多个 if else 条件的简写?