我对boolean
返回类型有疑问。
请检查以下代码:
boolean flag = sampleMethod();
public boolean samplemethod(){
return false;
}
sampleMethod();
public boolean samplemethod(){
return false;
}
在上面两个例子中,代码正确编译,没有任何编译时或运行时异常。
我的疑问是,Java并没有强制要求在调用程序中分配boolean
返回类型,对于其他数据类型,程序不起作用。
你能告诉我这个的原因吗?
答案 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