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

2021-11-25  本文已影响0人  scoot929

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

上一篇下一篇

猜你喜欢

热点阅读