Мне нужно создать большой HashMap, однако я не хотел бы вводить каждое значение в карту вручную, вот пример.
val codecs = HashMap(
"Foo" -> deriveEncoder[Foo],
"Bar" -> deriveEncoder[Bar],
"Qux" -> deriveEncoder[Qux],
)
deriveEncoder
- это функция, которая принимает один тип параметр. В идеале я хотел бы что-то вроде следующего:
val concreteClasses = List(Foo, Bar, Qux)
concreteClasses.foreach(T => codecs.put(T.name, deriveEncoder[T]))
Это невозможно, но что было бы разумной альтернативой этому?
Причина также в том, что это позволило бы список типов для передачи во время создания объекта, развязывая фактические типы с реализацией самого содержащего класса.
Спасибо