静态泛型方法

好久不写泛型代码,突然会想不起来怎么写了,所以记录一下。最近开发了一个工具方法,代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

public class PageUtils {

    public static <T, R> Page<R> entityPageToResponseDataPage(Page<T> entityPage, Class<R> clazz) {
        return entityPageToResponseDataPage(entityPage, clazz, null);
    }

    public static <T, R> Page<R> entityPageToResponseDataPage(Page<T> entityPage, Class<R> clazz,
                                                              BiConsumer<T, R> disposer) {

        List<R> pageRecords = new ArrayList<>();

        for (T record : entityPage.getRecords()) {
            R pateRecordItem = BeanUtil.copyProperties(record, clazz);

            if (disposer != null) {
                disposer.accept(record, pateRecordItem);
            }

            pageRecords.add(pateRecordItem);
        }

        Page<R> result = new Page<>();

        BeanUtils.copyProperties(entityPage, result);
        result.setRecords(pageRecords);

        return result;
    }
}

应用场景是这样的,我们分页查询时用的是实体,但是返回给前端时用的是DTO,所以需要进行一些转换工作,这个类就是帮忙快速转换的。

参考资料

  1. JAVA——泛型类和泛型方法(静态方法泛型)