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



我想写一个自定义映射器,可以将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()方法,它似乎正是你想要的,所以只需写下:

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();
}
}

最新更新