西西软件下载最安全的下载网站、值得信赖的软件下载站!

首页编程开发java → Java方法循环嵌套调用关于返回值的陷阱

Java方法循环嵌套调用关于返回值的陷阱

相关软件相关文章发表评论 来源:西西整理时间:2012/12/20 12:57:16字体大小:A-A+

作者:西西点击:0次评论:0次标签: 嵌套

上个星期修改了短信网关的重启程序,结果这周又遇到了新问题。虽然有时可以重启成功,但是有时候还是重启失败。本地模拟测试怎么都没发现这个问题,趁着闲时的功夫,自己到正式环境将日志分析了一下,发现重启不成功的原因主要在心跳3次后没有收到响应消息,程序不会自动重启,而是不断的继续发送心跳。

看了看代码,没有发现哪里有错啊。想了想,难道是由于方法嵌套调用的原因?于是自己弄了个简单的测试,来验证:

 public static boolean tests(int  i){
        if(i>5){
            return false;
        }
        if(true){
           tests(++i);
        }
        return true;
    }

好小子,果然是这里的问题,原来是由于tests()方法调用了tests()方法后,每个test()方法都有自己的返回值,只有第一层的tests()方法才会把自己的返回值输出给调用他的程序。

例如:若有程序调用了tests(1)后,tests(2)将返回值返回给了tests(1),tests(3)将返回值返回给了test(2),以此类推。运行完tests(5)后,tests(1)还会向下执行,最后结果不论如何都是true.

所以要想这里的结果正确,设置一个标志位接收每个tests()方法返回的值即可。

public static boolean tests(int  i){
        boolean flag = false;
        if(i>5){
            return false;
        }
        if(true){
          flag =  tests(++i);
        }
        return flag;
    }

这样才会得到想要的结果。

特此警示:嵌套方法调用关于返回值的陷阱

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)
    推荐文章

    没有数据