Personne ne sait si il y a une belle façon de me convertir un Scala cas instance de classe, par exemple
case class MyClass(param1: String, param2: String)
val x = MyClass("hello", "world")
Dans un mappage d'un certain type, par exemple
getCCParams(x) returns "param1" -> "hi", "param2" -> "3"
Ce qui fonctionne pour tous les cas de classe, et pas seulement prédéfinis. J'ai trouvé que vous pouvez tirer de l'affaire nom de la classe par l'écriture d'une méthode qui interroge le Produit sous-jacent de classe, par exemple
def getCCName(caseobj: Product) = caseobj.productPrefix
getCCName(x) returns "MyClass"
Donc, je suis à la recherche d'une solution similaire, mais pour le cas des champs de classe. J'imagine une solution peut avoir à utiliser de réflexion Java, mais je déteste écrire quelque chose qui pourrait les briser dans une future version de Scala si le sous-jacent de la mise en œuvre des classes de cas de changements.
Actuellement, je travaille sur un Scala de serveur et de définir le protocole et tous ses messages et des exceptions à l'aide des classes de cas, comme ils sont une belle et concise, de construire pour cela. Mais je puis avoir besoin de les traduire en Java carte à envoyer sur la messagerie de la couche pour toute mise en œuvre du client à utiliser. Mon implémentation actuelle ne définit une traduction pour chaque classe de cas séparément, mais il serait bien de trouver une solution universelle.