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

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

public interface PaginationInterface {
    /**
     *
     * @param func1 获取数据函数
     * @param func2 map每页的结果
     * @param needResult 是否需要查询之后的结果
     * @param  结果类型
     * @param  结果
     * @return
     */
    default  List pagination(Function> func1, Function, List> func2,
                                      boolean needResult) {
      int page = 0;
      List result = new ArrayList<>();
      Page 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如何自己实现一个函数式接口)