Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java编译器需要返回值?_Java - Fatal编程技术网

为什么Java编译器需要返回值?

为什么Java编译器需要返回值?,java,Java,为什么java编译器需要最终返回语句 -普拉桑纳如果!someBoolean,然后调用method1,但不返回任何内容。因此,流可能完全以最后一个语句结束。因为如果布尔值不为真,则不会返回任何内容。Java要求所有方法返回其对应的值类型,在本例中为MyObject。您需要修改代码: public MyObject method1() { boolean someBoolean = true; MyObject obj = ...; if(!someBoolean) method1(

为什么java编译器需要最终返回语句


-普拉桑纳

如果!someBoolean,然后调用method1,但不返回任何内容。因此,流可能完全以最后一个语句结束。

因为如果布尔值不为真,则不会返回任何内容。Java要求所有方法返回其对应的值类型,在本例中为MyObject。

您需要修改代码:

public MyObject method1() {
  boolean someBoolean = true;
  MyObject obj = ...;

  if(!someBoolean) method1();
  else return obj;
  // flow should never come to this statement, but compiler requires this return. why?
  return null;
}

最初,您的if语句没有返回任何if!someBoolean,它只是调用method1并忽略结果。

因为您在方法的签名中定义了它们应该是返回类型MyObject。另外,如果方法中的所有路径都不是空的,那么它必须有一个返回值。你错了。控制确实可以到达您指示的点。这不是一个真正的问题。应该把我的评论贴出来作为答案哈哈。我的错。这是有道理的,如果!someBoolean返回方法1
public MyObject method1() {
  boolean someBoolean = true;
  MyObject obj = ...;

  if(!someBoolean) return method1();
  else return obj;
}