public class Test
{
public Serializable callService(String _serverName)
{
boolean serverExist = false;
for (int i = 0; i < 5; i++)  // 这个for循环没有特别的意义,只是模拟了一下我原本的业务场景
{
serverExist = _serverName.equals("123");
if (serverExist)
{
return "success";
}
}
if (!serverExist)
{
return "failed";
}
}
}现在的问题是编译的时候eclipse就报错,就是说这一段代码没有保证都return了。
如果我把第14行给注释掉,那就没问题,编译通过。我的问题是:
       我的代码在逻辑上是没问题的。
       如果serverName是123,那么在第8行将serverExist置为true,进入第9行的判断,return "success";
       如果serverName不是123,那么for循环执行完毕,进入第14行的if判断,此时serverExist为false,!serverExist为true,进入if判断,return "failed"。请各位指教。

解决方案 »

  1.   

    if (!serverExist)        {            return "failed";        }
    if包起来的程序,会被编译器认为是条件语句,编译器会认为这个方法可能有一种情况是没有返回的,所以就会报编译错误。别按照你的理解,有时候要考虑下机器的世界。1. if后面加一个else,也不会报错。
    2. if删去这是两种方式,你可以试试。
      

  2.   

    最后一个if语句外面加一个return  返回值
      

  3.   

    public class Test
    {
        public Serializable callService(String _serverName)
        {
            boolean serverExist = false;
            for (int i = 0; i < 5; i++)  // 这个for循环没有特别的意义,只是模拟了一下我原本的业务场景
            {
                serverExist = _serverName.equals("123");
                if (serverExist)
                {
                    return "success";
                }
            }
    return "failed";
        }
    }
    改成这样试下。
      

  4.   

    这是编译器。如果if()都失败了,那么还有return吗?
      

  5.   

    在这种情况下,貌似编译器没有费事去检查所有return的返回覆盖几率