Java 返回while和if-else循环

Java 返回while和if-else循环,java,Java,我有下面的方法,它期望返回类型为SomeObject。函数的作用是:返回SomeObject。当一个条件得到满足时,我想从循环中出来。由于找不到返回类型,我遇到编译错误。你能指出我身体状况的问题吗 public static SomeObject mapper(List<String> mylist) { Iterator iter = mylist.iterator(); while (iter.hasNext()) { Object[] resu

我有下面的方法,它期望返回类型为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
}
公共静态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:)