我想将我的实体转换为数据访问对象,并且我不想为每个实体创建一个方法。如何将我的代码转换为具有通用返回Entity
和参数ObjectDTO
的通用方法?
private ConcreteEntity convertToEntity(ConcreteObjectDTO objectDTO) throws ParseException {
ConcreteEntity entity = modelMapper.map(objectDTO, ConcreteEntity.class);
return entity;
}
我编写了以下代码,但是我不知道如何处理Entity.class
private <Entity, ObjectDTO> Entity convertToEntity(ObjectDTO objectDTO) throws ParseException {
Entity entity = modelMapper.map(objectDTO, Entity.class);
return entity;
}
答案 0 :(得分:2)
您的方法将需要使用Class
实例作为参数,以便可以将正确的类转发到modelMapper.map()
。这意味着Class<E>
,其中E extends Entity
。请注意,通常给通用类型一个字母名称。
类似地,ObjectDTO
也应泛化为O extends ObjectDTO
或等效名称。
private <O extends ObjectDTO, E extends Entity> E convertToEntity(O objectDTO, Class<E> entityClass) throws ParseException {
return modelMapper.map(objectDTO, entityClass);
}
您也许可以跳过泛化DTO参数。可能没有必要。
private <E extends Entity> E convertToEntity(ObjectDTO objectDTO, Class<E> entityClass) throws ParseException {
return modelMapper.map(objectDTO, entityClass);
}