返回Java中的布尔类型

时间:2010-02-15 09:04:08

标签: java types return-type

我对boolean返回类型有疑问。 请检查以下代码:

代码示例1

boolean flag = sampleMethod();

public boolean samplemethod(){
    return false;
}

代码示例2

sampleMethod();

public boolean samplemethod(){
    return false; 
}

在上面两个例子中,代码正确编译,没有任何编译时或运行时异常。 我的疑问是,Java并没有强制要求在调用程序中分配boolean返回类型,对于其他数据类型,程序不起作用。 你能告诉我这个的原因吗?

3 个答案:

答案 0 :(得分:11)

Java 从不强制您分配函数调用的返回值。您的其他代码一定有问题(您也可以在此处发布)

PS:这让我想起了古老的Turbo Pascal,你必须启用扩展语法才能获得这种行为。

答案 1 :(得分:4)

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

我猜想Java以这种方式设计的原因包括:

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

  • 传统:C,C ++,几乎没有其他语言强迫你这样做。 (我对一些语言的模糊回忆确实......但那是很久以前的事了。)

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

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

答案 2 :(得分:0)

当您忘记将结果分配给变量时,

javac无法发出警告,但FindBugs可以。

@CheckReturnValue(explanation="...")
public boolean samplemethod(){
    return false; 
}

sampleMethod(); // Now generates a warning