如何将代码转换为泛型方法 - 对象.class



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

您的方法需要将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);
}

最新更新