java吧 关注:1,239,067贴子:12,710,148
  • 10回复贴,共1

Hello 求助 ,关于return的用法

只看楼主收藏回复

我现在有一个方法 doAction
方法里面还有很多其他方法
{
doActionA();
doActionB();
...
doActionZ();
}
每个方法都会返回1或0,返回0时,要求代码继续向下执行,返回1时 return跳出doAction
请问除了对每个doActionA..Z都做一次if判定以外,有没有更简洁的写法呢,我用的是Java8


IP属地:上海1楼2022-01-13 16:25回复
    函数式接口一直调用就行


    IP属地:北京来自Android客户端2楼2022-01-13 16:41
    收起回复
      Java不允许函数内部定义函数吧


      IP属地:荷兰来自Android客户端3楼2022-01-13 17:43
      回复
        内部的方法抛异常不行吗?为什么要return1,你不做ifelse判断return0或1就没什么区别。


        IP属地:广东来自iPhone客户端4楼2022-01-13 17:51
        回复
          而且你这个return就没意义的,直接void, 不满足条件抛异常就好了呀。真要做项目哪会这样子return0或1呀。


          IP属地:广东来自iPhone客户端5楼2022-01-13 17:53
          回复
            不知道自定义异常行不行


            IP属地:陕西来自iPhone客户端6楼2022-01-13 18:16
            回复
              练手的话可以搞个责任链模式


              IP属地:北京来自Android客户端7楼2022-01-13 18:53
              回复
                public static void doAction() {
                Optional.ofNullable(new Object())
                .filter(a -> return0() == 0)
                .filter(a -> return1() == 0)
                .filter(a -> return2() == 0)
                .filter(a -> return3() == 0);
                }


                IP属地:浙江8楼2022-01-13 19:13
                回复
                  如果 doActionABC没有入参,还可以这样写
                  public static void doAction() {
                  doAction(Main::return0, Main::return1, Main::return2, Main::return3);
                  }
                  public static void doAction(Supplier<Integer>... functions) {
                  for (int i = 0; i < functions.length; ++i) {
                  if (functions[i].get() != 0) {
                  return;
                  }
                  }
                  }
                  public static int return0() {
                  System.out.println("do 0");
                  return 0;
                  }
                  ....


                  IP属地:浙江9楼2022-01-13 19:21
                  回复