为什么 eclipse 说我在这个方法中没有 return 语句
Why does eclipse say I have no return statement in this method
我为我在 java 中用 Eclipse IDE 做的 class 写了一个辅助方法。该方法的代码如下
private foo getfooMonitor(String id)
{
if(fooList.isEmpty())
{
if (Mgr.getValue(Name, ListPath + id) == null)
{
return null;
}
}
else
{
for(foo f : fooList)
{
if(f.getID().equalsIgnoreCase(id))
{
return foo;
}
}
return null;
}
}
我很好奇为什么如果该方法将被强制执行 return 某事,因为它有一个 if then else
块,无论如何都有一个 return
语句命中,为什么eclipse 会认为我没有 return 语句吗?
这个 eclipse 是否强制执行了一些奇怪的语法,因为它无法解析 if then else
块以查看该方法将被强制为 return,或者这是一个 java 没有的东西允许 non void
方法有效,除非它有一个 return 语句作为方法主体的最后一行?
并非所有路径return。如果 Mgr.getValue(Name, ListPath + id) == null
return 为 false 那么您的方法没有 return 值
并非每个执行路径都有一个 return 值:如果 fooList.isEmpty()
,但是 Mgr.getValue(Name, ListPath + id) != null
呢?永远不会输入内部 if
。外面的 else
被忽略了,因为外面的 if
被输入了。因此,程序到达一个状态,方法结束,但没有 returned.
旁注:关于执行路径,Java 编译器非常愚蠢。以下面的方法为例:
boolean isTrue(boolean value) {
if (value) {
return (true);
}
if (!value) {
return (false);
}
}
通过tertium non datur,执行第一个或第二个if
。但是这段代码仍然给出相同的编译错误。获得此 运行 的唯一方法是将 if (!value)
更改为 else
(这在语义上是相同的)。
您在原始 if 语句的嵌套 if 语句中只有一个 return 语句。如果 Mgr.getValue(Name, ListPath + id) != null
但外部语句有效,则没有 return 语句。
private foo getfooMonitor(String id)
{
if(fooList.isEmpty())
{
if (Mgr.getValue(Name, ListPath + id) == null)
{
return null;
} else {
//this path does not return a value
}
}
else
{
for(foo f : fooList)
{
if(f.getID().equalsIgnoreCase(id))
{
return foo;
}
}
return null;
}
}
看到没有return的路径用注释指出。
我为我在 java 中用 Eclipse IDE 做的 class 写了一个辅助方法。该方法的代码如下
private foo getfooMonitor(String id)
{
if(fooList.isEmpty())
{
if (Mgr.getValue(Name, ListPath + id) == null)
{
return null;
}
}
else
{
for(foo f : fooList)
{
if(f.getID().equalsIgnoreCase(id))
{
return foo;
}
}
return null;
}
}
我很好奇为什么如果该方法将被强制执行 return 某事,因为它有一个 if then else
块,无论如何都有一个 return
语句命中,为什么eclipse 会认为我没有 return 语句吗?
这个 eclipse 是否强制执行了一些奇怪的语法,因为它无法解析 if then else
块以查看该方法将被强制为 return,或者这是一个 java 没有的东西允许 non void
方法有效,除非它有一个 return 语句作为方法主体的最后一行?
并非所有路径return。如果 Mgr.getValue(Name, ListPath + id) == null
return 为 false 那么您的方法没有 return 值
并非每个执行路径都有一个 return 值:如果 fooList.isEmpty()
,但是 Mgr.getValue(Name, ListPath + id) != null
呢?永远不会输入内部 if
。外面的 else
被忽略了,因为外面的 if
被输入了。因此,程序到达一个状态,方法结束,但没有 returned.
旁注:关于执行路径,Java 编译器非常愚蠢。以下面的方法为例:
boolean isTrue(boolean value) {
if (value) {
return (true);
}
if (!value) {
return (false);
}
}
通过tertium non datur,执行第一个或第二个if
。但是这段代码仍然给出相同的编译错误。获得此 运行 的唯一方法是将 if (!value)
更改为 else
(这在语义上是相同的)。
您在原始 if 语句的嵌套 if 语句中只有一个 return 语句。如果 Mgr.getValue(Name, ListPath + id) != null
但外部语句有效,则没有 return 语句。
private foo getfooMonitor(String id)
{
if(fooList.isEmpty())
{
if (Mgr.getValue(Name, ListPath + id) == null)
{
return null;
} else {
//this path does not return a value
}
}
else
{
for(foo f : fooList)
{
if(f.getID().equalsIgnoreCase(id))
{
return foo;
}
}
return null;
}
}
看到没有return的路径用注释指出。