Всем доброго времени суток.
По ходу написания небольшой SDK для API заказчика в Android Library Module мне стало лень описывать 100500 мапперов data-классов из data-слоя в domain-слой и посетила идея заюзать дженерики - а именно создать некую следующую простую конструкцию:
object SDKMapper {
@Suppress("UNCHECKED_CAST")
fun <T, F> map(data: F, to: Class<T>): T = to.getDeclaredConstructor(to).newInstance(data)
}
И в каждом data-классе при необходимости реализовывать метод конструкторы в виде:
constructor(data: MyResponseDTO) {
// some code here with values set to fields
}
И в будущем вызывать а-ля:
fun getResponse(): MyResponse = SDKMapper.map(repository.getResponse(), MyResponse::class.java)
Хотелось услышать мнение более опытных разработчиков - стоит ли так делать, плохая или хорошая это практика?
Ибо не всегда то, что экономит время, не ухудшает качество кода.
UPD: Обновил SDKMapper до inline-реализации маппинга и перешел на конструкторы