我有一个实体-DTO转换器,用于用户如下:
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要管理,所以我想像这样抽象转换器。
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, ???);
}
}
我的问题是:我要放什么代替?
发布于 2022-07-09 15:16:13
我认为您可以使用来自modelMapper的modelMapper,但不确定它是否有效。
发布于 2022-07-09 15:24:02
你会期望你可以使用S
,对吗?不幸(或者幸运的是?)Java编译器在生成类文件之前删除所有泛型类型,因此运行时的代码没有正确的可用类型信息。这意味着您需要提供它。
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);
}
}
https://stackoverflow.com/questions/72921948
复制相似问题