在用Python编写代码时,我经常通过在循环中插入return来中断函数/方法,例如,当达到条件时,我想返回值。我注意到,如果我在Java中这样做,IDE (在本例中是Eclipse)似乎不识别return命令。例如,在这里:
protected Node getTrueParent() {
for (Edge e : this.edges) {
if (e.getNode2() == this && (!e.isPseudo())) {
Node parent = e.getNode1();
return parent;
}
}
}Eclipse指出,“此方法必须返回Node类型的结果”。我做的是错的吗?而且,parent是在for循环中声明的,所以我不能在循环之外返回它。一种方法是在开始时(即在循环之外)声明parent,但这对我来说是非常草率的。写这篇文章的合适方法是什么?
发布于 2017-02-08 12:53:27
当您在循环中找不到结果时,您就缺少了一个return。
protected Node getTrueParent() {
for (Edge e : this.edges) {
if (e.getNode2() == this && (!e.isPseudo())) {
Node parent = e.getNode1();
return parent;
}
}
return null; // ADD THIS
}如果您确信这不应该发生,并且您认为这里不应该有返回,那么抛出一个例外:
protected Node getTrueParent() {
for (Edge e : this.edges) {
if (e.getNode2() == this && (!e.isPseudo())) {
Node parent = e.getNode1();
return parent;
}
}
throw new IllegalStateException("Somebody broke the data. Send Help!");
}发布于 2017-02-08 12:53:34
如果循环结束而不返回任何内容,则必须返回某些内容。
例如:
protected Node getTrueParent() {
for (Edge e : this.edges) {
if (e.getNode2() == this && (!e.isPseudo())) {
return e.getNode1();
}
}
return null;
}发布于 2017-02-08 12:54:03
如果e.getNode2()永远不是this,它会返回什么?整个方法的所有路径都必须返回某些内容。
https://stackoverflow.com/questions/42113653
复制相似问题