【问题标题】:can't return a generic while create jooq custom mapper创建 jooq 自定义映射器时无法返回泛型
【发布时间】:2018-08-01 08:34:35
【问题描述】:

我想写一个自定义映射器,可以将 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类型的实例,因为你不能实例化一个泛型类型。

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    jOOQ 有一个开箱即用的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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 2011-03-05
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多