У меня есть сомнения в проекте Java:
public class example {
public Data getData() {
List<Users> users = usersService.findByClinicId(id);
Type targetListType = new TypeToken<List<UserDTO>>() {}.getType();
List<UserDTO> usersDTO = modelMapper.map(users, targetListType);
List<Personas> profesionales = personasService.findProfesionalsByClinicId(id);
targetListType = new TypeToken<List<PersonaDTO>>() {}.getType();
List<PersonaDTO> profesionalesDTO = modelMapper.map(profesionales, targetListType);
List<Personas> auxiliares = personasService.findAuxiliarsByClinicId(id);
targetListType = new TypeToken<List<PersonaDTO>>() {}.getType();
List<PersonaDTO> auxiliaresDTO = modelMapper.map(auxiliares, targetListType);
List<Prescripciones> prescripciones = prescripcionesService.findProfesionalsByClinicId(id);
targetListType = new TypeToken<List<PrescriptionNameDTO>>() {}.getType();
List<PrescriptionNameDTO> prescripcionesDTO = modelMapper.map(prescripciones, targetListType);
profesionales = entityToDTO(PersonaDTO.class, profesionales);
...
}
private <T> List<T> entityToDTO(Class<T> clazz, List<T> list) {
Type targetListType = new TypeToken<List<clazz>>() {}.getType();
List<PersonaDTO> auxiliaresDTO = modelMapper.map(list, targetListType);
}
}
Идея состоит в том, чтобы уменьшить код функции getData
с помощью функции entityToDTO
.
У меня проблема:
- В методе
entityToDTO
я хочу передать в первом параметре TypeToken требуемый тип List, но он не принимает List, где clazz - переменная с именем Class.
Есть ли способ передать внутри оператора List diamond переменную с типом класса, который я хочу использовать?
UPDATE:
Идея состоит в том, чтобы уменьшить количество строк функции getData
.