0

我有下面的方法,它期望返回类型为 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
}
4

3 回答 3

4

想象一下当你的while循环从不执行时会发生什么?如果您的列表为空,则会发生这种情况。在这种情况下,您的方法不会返回任何内容,因此会出现错误。

只需添加一个返回语句:

return null;

在你的while循环之后。SomeObject或者,如果您尚未null检查此方法返回的值,则返回一些默认实例。

于 2013-06-21T22:05:16.403 回答
3

编译器要求所有可能的代码路径

  • return一个值
  • throw一个例外

您应该在程序的上下文中执行任何更有意义的操作,在您的情况下,这意味着将这些语句之一添加到方法的末尾。

于 2013-06-21T22:06:08.247 回答
0

在末尾添加return null;(或)相关声明。return

如果您的 while 循环中不满足任何条件,则将返回此值。

于 2013-06-21T22:05:01.630 回答