java返回while和if-else循环
我有下面的方法,它期望返回类型为SomeObject。函数的作用是:返回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
}
# 1 楼答案
想象一下
while
循环从未执行时会发生什么?如果您的列表为空,则会发生这种情况。在这种情况下,您的方法不会返回任何内容,因此会出现错误只需添加一个return语句:
在
while
循环之后。或者返回SomeObject
的某个默认实例,如果您尚未对该方法返回的值进行null
检查# 2 楼答案
编译器要求所有可能的代码路径
return
一个值throw
一个例外在您的程序上下文中,您应该做任何更有意义的事情,在您的情况下,这意味着将这些语句中的一条添加到方法的末尾
# 3 楼答案
在末尾添加
return null;
(或)相关的return
语句如果while循环中没有满足任何条件,则将返回该条件