美文网首页
2021-11-25 jave如何自己实现一个函数式接口

2021-11-25 jave如何自己实现一个函数式接口

作者: scoot929 | 来源:发表于2021-11-25 15:07 被阅读0次

    我们都知道java8的stream 是通过函数式接口实现的
    下面的例子实现一个分页的函数式接口

    public interface PaginationInterface {
        /**
         *
         * @param func1 获取数据函数
         * @param func2 map每页的结果
         * @param needResult 是否需要查询之后的结果
         * @param <T> 结果类型
         * @param <R> 结果
         * @return
         */
        default <T, R> List<R> pagination(Function<Integer, Page<T>> func1, Function<Page<T>, List<R>> func2,
                                          boolean needResult) {
          int page = 0;
          List<R> result = new ArrayList<>();
          Page<T> sub;
          do {
            sub = func1.apply(page);
            if (needResult) {
              result.addAll(func2.apply(sub));
            } else {
              func2.apply(sub);
            }
            page++;
          } while (sub.hasNext());
          return result;
        }
    }
    

    使用的时候只需要

    pagination(i -> dataRepository.findAll(PageRequest.of(i, SIZE)), this::handle, false);
    

    具体每页的处理只需要放到handle函数中

    相关文章

      网友评论

          本文标题:2021-11-25 jave如何自己实现一个函数式接口

          本文链接:https://www.haomeiwen.com/subject/cwoatrtx.html