Java 返回while和if-else循环
我有下面的方法,它期望返回类型为SomeObject。函数的作用是:返回SomeObject。当一个条件得到满足时,我想从循环中出来。由于找不到返回类型,我遇到编译错误。你能指出我身体状况的问题吗Java 返回while和if-else循环,java,Java,我有下面的方法,它期望返回类型为SomeObject。函数的作用是:返回SomeObject。当一个条件得到满足时,我想从循环中出来。由于找不到返回类型,我遇到编译错误。你能指出我身体状况的问题吗 public static SomeObject mapper(List<String> mylist) { Iterator iter = mylist.iterator(); while (iter.hasNext()) { Object[] resu
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
}
公共静态SomeObject映射器(列表mylist){
迭代器iter=mylist.Iterator();
while(iter.hasNext()){
对象[]结果=(对象[])iter.next();
如果(条件){
//剂量
返回地图数据(abc);
}否则,如果(条件){
//剂量
返回mapData(def);
}否则{
//剂量
返回地图数据(ghi);
}
}
//由于此位置没有返回类型,因此获取编译错误
}
添加返回空值代码>(或)相关的返回末尾的语句
如果while循环中没有满足任何条件,那么将返回该条件。想象一下当while循环从未执行时会发生什么?如果您的列表为空,则会发生这种情况。在这种情况下,您的方法不会返回任何内容,因此会出现错误
只需添加一个return语句:
return null;
在while
循环之后。或者返回SomeObject
的某个默认实例,如果尚未执行null
检查此方法返回的值。编译器要求所有可能的代码路径
返回一个值
抛出一个异常
在您的情况下,您应该执行在程序上下文中更合理的操作,这意味着将这些语句中的一条添加到方法的末尾。您可以添加一个返回null代码>在while
循环之后。天哪。。。现在看看人们如何爬到rep@pravata,返回一个null
是一个设计问题,如讨论。在我看来,我更愿意评估该方法是否应该返回null
,而不是只在底部设置returnnull
。如果您希望在while
循环之后不返回任何内容,您可以抛出一个异常(或RuntimeException
,如果希望保持静默),并按照arshajii answer中的解释在调用方中处理该异常,这可能导致另一种设计。@Luigimendoza。对。应该早点加上这个。Thnx:)