Java使用嵌套的if else语句从方法返回值

时间:2016-10-26 17:37:20

标签: java if-statement

我有一个方法,根据if条件返回一些东西。但是当我使用下面的代码时,它无法识别我的return语句,并说要将方法声明更改为void。你能帮忙优化代码吗?

if(myList == null){
    return abc;
} else {
    for(myList myListItem : myList){            
        if(myList.getId() != null){
          if(TEST1.equals(myListItem.getId())){
            return abc;
          } else if(TEST2.equals(myListItem.getId())){
            return xyz;
          } else if(TEST3.equals(myListItem.getId())){
            return pqr;
        }
    }  
}
}

4 个答案:

答案 0 :(得分:1)

对于你的其他人,你没有返回任何东西......在那里返回一些东西或者在if:

之外返回一些东西
          else {
                for(myList myListItem : myList){            
                    if(myList.getId() != null){
                        if(TEST1.equals(myListItem.getId())){
                            return abc;
                        } else if(TEST2.equals(myListItem.getId())){
                            return xyz;
                        } else if(TEST3.equals(myListItem.getId())){
                            return pqr;
                        }
                    }  
                }
           **return something;**//<--here
           }
//or return here
return something;//<-- OR HERE

答案 1 :(得分:1)

if(myList == null){
    smth = abc;
} else {
    for(myList myListItem : myList){            
        if(myList.getId() != null){
          if(TEST1.equals(myListItem.getId())){
            smth = abc;
          } else if(TEST2.equals(myListItem.getId())){
            smth = xyz;
          } else if(TEST3.equals(myListItem.getId())){
            smth = pqr;
        }
    }  
 }
   return smth;
    }

试试这个适用于不同条件的功能

答案 2 :(得分:0)

编译器只是告诉你代码中有路径看到返回语句!

你的第一个如果在for-block中有另一个;因此,当该东西为空时,没有返回语句!然后 - 如果for循环根本不循环会发生什么?!

换句话说:相信你的编译器。当它告诉你,你的方法“应该是无效的”时,则意味着:至少有一条路径没有返回值。在你修复所有这些路径之前,它不会停止抱怨!

最后:您可能想了解单层抽象原则。你看 - 你创建的代码很难读,你没有看到那个明显的问题。所以你现在可以退后一步,学习如何编写可读代码 ......

答案 3 :(得分:-1)

if (myList != null) {
  for() {}
}
return abc;