Как преобразовать код в универсальный метод - Object.class - PullRequest
0 голосов
/ 25 января 2019

Я хочу преобразовать свои сущности в объекты доступа к данным, и я не хочу создавать метод для каждой сущности.Как я могу преобразовать мой код в универсальный метод с универсальным возвращением 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 голосов
/ 25 января 2019

Ваш метод должен будет принять экземпляр 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...