Gibt es eine gute Möglichkeit, eine Scala- case class
Instanz zu konvertieren , z
case class MyClass(param1: String, param2: String)
val x = MyClass("hello", "world")
in eine Art Mapping, z
getCCParams(x) returns "param1" -> "hello", "param2" -> "world"
Was für jede Fallklasse funktioniert, nicht nur für vordefinierte. Ich habe festgestellt, dass Sie den Namen der Fallklasse herausziehen können, indem Sie eine Methode schreiben, die die zugrunde liegende Produktklasse abfragt, z
def getCCName(caseobj: Product) = caseobj.productPrefix
getCCName(x) returns "MyClass"
Ich suche also nach einer ähnlichen Lösung, aber nach den Feldern für Fallklassen. Ich würde mir vorstellen, dass eine Lösung möglicherweise Java-Reflektion verwenden muss, aber ich würde es hassen, etwas zu schreiben, das in einer zukünftigen Version von Scala möglicherweise kaputt geht, wenn sich die zugrunde liegende Implementierung von Fallklassen ändert.
Derzeit arbeite ich an einem Scala-Server und definiere das Protokoll und alle seine Nachrichten und Ausnahmen mithilfe von Fallklassen, da diese ein so schönes, prägnantes Konstrukt dafür sind. Aber ich muss sie dann in eine Java-Map übersetzen, um sie über die Messaging-Schicht zu senden, damit jede Client-Implementierung sie verwenden kann. Meine aktuelle Implementierung definiert nur eine Übersetzung für jede Fallklasse separat, aber es wäre schön, eine verallgemeinerte Lösung zu finden.