繁体   English   中英

创建jooq自定义映射器时无法返回泛型

[英]can't return a generic while create jooq custom mapper

我想编写一个自定义映射器,可以将jooq记录转换为映射,但是存在一些问题,这是我的代码。

public class BaseMapper<R extends Record, E extends Map> implements RecordMapper<R, E> {

@Override
public E map(R record) {
    if (record == null) {
        return null;
    }

    Arrays.stream(record.fields())
            .collect(Collectors.toMap(
                    Field :: getName,
                    field -> record.get(field),
                    E :: new
            ));
}

当我实现RecordMapper的map方法时,我不知道如何返回E类型实例,因为您不能实例化泛型类型。

jOOQ有一个开箱即用的Record.intoMap()方法,它似乎完全Record.intoMap()您的需求,因此只需编写以下代码:

public class BaseMapper<R extends Record> implements RecordMapper<R, Map<String, Obhect>> {

    @Override
    public Map<String, Object> map(R record) {
        return record == null ? null : record.intoMap();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM