首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ModelMapper的抽象

ModelMapper的抽象
EN

Stack Overflow用户
提问于 2022-07-09 13:56:11
回答 2查看 42关注 0票数 0

我有一个实体-DTO转换器,用于用户如下:

代码语言:javascript
运行
复制
public class UserConverter {
    
    public UserDto convertEntityToDto(UserEntity user) {
        ModelMapper modelMapper = new ModelMapper();
        return modelMapper.map(user, UserDto.class);
    }

    public UserEntity convertDtoToEntity(UserDto userDto) {
        ModelMapper modelMapper = new ModelMapper();
        return modelMapper.map(userDto, UserEntity.class);
    }

}

我有许多实体DTO要管理,所以我想像这样抽象转换器。

代码语言:javascript
运行
复制
public class Converter<T, S> {
    
    public S convertEntityToDto(T t) {
        ModelMapper modelMapper = new ModelMapper();
        return modelMapper.map(t, ???);
    }

    public T convertDtoToEntity(S s) {
        ModelMapper modelMapper = new ModelMapper();
        return modelMapper.map(s, ???);
    }

}

我的问题是:我要放什么代替?

EN

回答 2

Stack Overflow用户

发布于 2022-07-09 15:16:13

我认为您可以使用来自modelMapper的modelMapper,但不确定它是否有效。

票数 1
EN

Stack Overflow用户

发布于 2022-07-09 15:24:02

你会期望你可以使用S,对吗?不幸(或者幸运的是?)Java编译器在生成类文件之前删除所有泛型类型,因此运行时的代码没有正确的可用类型信息。这意味着您需要提供它。

代码语言:javascript
运行
复制
public class Converter<T, S> {

    private Class<S> dtoType;

    public Converter(Class<S> dtoType) {
        this.dtoType = dtoType;
    }
    
    public S convertEntityToDto(T t) {
        ModelMapper modelMapper = new ModelMapper();
        return modelMapper.map(t, dtoType);
    }

    public T convertDtoToEntity(S s) {
        ModelMapper modelMapper = new ModelMapper();
        return modelMapper.map(s, dtoType);
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72921948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档