代码之家  ›  专栏  ›  技术社区  ›  gmhk

Java中的返回型布尔

  •  2
  • gmhk  · 技术社区  · 15 年前

    我有个问题 boolean 返回类型。 检查以下代码:

    代码示例1

    boolean flag = sampleMethod();
    
    public boolean samplemethod(){
        return false;
    }
    

    代码示例2

    sampleMethod();
    
    public boolean samplemethod(){
        return false; 
    }
    

    在上面的两个例子中,代码正确地编译,没有任何编译时或运行时异常。 我的怀疑是,Java并没有强制它 布尔 要在调用程序中分配的返回类型,对于其他数据类型,该程序不工作。 你能给我解释一下原因吗?

    3 回复  |  直到 11 年前
        1
  •  4
  •   Stephen C    11 年前

    正如@ DR所说,Java不会强制您分配方法调用的结果。无效或无空方法调用作为Java中的完整语句有效。

    我推测Java设计的原因包括以下几个方面:

    • 便利性:如果必须分配每个非空方法调用的结果,大多数开发人员都会觉得这很麻烦。

    • 传统:C,C++,几乎没有其他语言强迫你这么做。(我模糊地回忆起某些语言……但那是很久以前的事了。)

    • 无效性:不能阻止开发人员将结果分配给临时变量,然后忽略它。或者编写一个执行相同操作的包装方法。

    • 更好的替代方案:如果您想鼓励开发人员注意Java中的错误,请抛出一个适当的检查异常。

        2
  •  11
  •   Daniel Rikowski    15 年前

    爪哇 从未 强制您分配函数调用的返回值。你一定有什么问题 其他 代码(你也可以在这里发布)

    PS:这让我想起了好的旧turbo pascal,在这里您必须启用扩展语法来获得这种行为。

        3
  •  0
  •   finnw    15 年前

    javac 当忘记将结果赋给变量时,无法发出警告,但 FindBugs 罐头。

    @CheckReturnValue(explanation="...")
    public boolean samplemethod(){
        return false; 
    }
    
    sampleMethod(); // Now generates a warning