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

我们都知道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函数中

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容