如何将代码转换为通用方法-Object.class

时间:2019-01-24 23:25:28

标签: java oop generics

我想将我的实体转换为数据访问对象,并且我不想为每个实体创建一个方法。如何将我的代码转换为具有通用返回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;
}

1 个答案:

答案 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);
}