Есть ли хороший способ конвертировать экземпляр case class
случая Scala, например
case class MyClass(param1: String, param2: String)
val x = MyClass("hello", "world")
в какое-то отображение, например
getCCParams(x) returns "param1" -> "hello", "param2" -> "world"
Который работает для любого случая класса, а не только предопределенные. Я обнаружил, что вы можете извлечь имя класса дела, написав метод, который опрашивает базовый класс Product, например
def getCCName(caseobj: Product) = caseobj.productPrefix
getCCName(x) returns "MyClass"
Поэтому я ищу подобное решение, но для полей класса случая. Я мог бы предположить, что решение могло бы использовать отражение Java, но я бы не хотел писать что-то, что может сломаться в будущем выпуске Scala, если изменится базовая реализация классов case.
В настоящее время я работаю на сервере Scala и определяю протокол и все его сообщения и исключения, используя классы падежей, поскольку они являются такой красивой и лаконичной конструкцией для этого. Но затем мне нужно перевести их в карту Java для отправки через уровень обмена сообщениями для использования любой клиентской реализацией. Моя текущая реализация просто определяет перевод для каждого класса case отдельно, но было бы неплохо найти обобщенное решение.