我有下面的方法,它希望返回类型为SomeObject。 mapData()函数返回SomeObject。一旦满足一个条件,我想从循环中出来。由于找不到返回类型,我收到编译错误。你能指出我的病情吗?
public static SomeObject mapper(List<String> mylist) {
Iterator iter = mylist.iterator();
while (iter.hasNext()) {
Object[] result = (Object[]) iter.next();
if (condition){
//dosomething
return mapData(abc);
}else if (condition) {
//dosomething
return mapData(def);
}else {
//dosomething
return mapData(ghi);
}
}
// Get compilation error due to no return type at this position
}
答案 0 :(得分:4)
想象一下当你的while
循环从未执行时会发生什么?如果您的列表为空,则会发生这种情况。在这种情况下,您的方法不会返回任何内容,从而导致错误。
只需添加一个return语句:
return null;
在while
循环之后。如果您尚未对此方法返回的值进行SomeObject
检查,请返回null
的默认实例。
答案 1 :(得分:3)
编译器要求所有可能的代码路径
return
一个值throw
例外你应该在程序的上下文中做任何更有意义的事情,在你的情况下,这意味着在你的方法的末尾添加其中一个语句。
答案 2 :(得分:0)
在最后添加return null;
(或)相关return
语句。
如果你的while循环中没有满足任何条件,那么这将被返回。