2010-07-30 2 views
0

Est-ce que quelqu'un a rencontré un formateur Object to String universel pour Java? J'imagine quelque chose qui utiliserait la réflexion pour découvrir les propriétés d'un objet arbitraire (probablement juste un JavaBean, mais incluant probablement des propriétés qui sont Collection s ou Maps s) et formater l'objet en String? C'est dans une situation où je n'ai aucun contrôle sur les implémentations toString() des classes cibles.Est-ce que quelqu'un a rencontré un formateur Object to String universel pour Java?

Est-ce que quelque chose comme ceci existe quelque part?

+0

Universel? Je crois que non. À quoi ressemble un Socket sérialisé par exemple? – CurtainDog

+0

{ "créé": false, "lié": false, "connecté": false, "fermé": false, "closeLock": {}, "shutIn": false, "ShutOut": faux, "impl": { "@class": "java.net.SocksSocketImpl", "socket": { "@reference": "../ .." }, "port": { "@-in défini": "java.net.SocketImpl", "$": "0" }, "localport": 0, "délai d'attente": 0, "trafficClass": 0, " sh ut_rd ": false, "SHUT_WR": false, "fdUseCount": 0, "fdLock": {}, "closePending": false, "CONNECTION_NOT_RESET": 0, "CONNECTION_RESET_PENDING": 1, " CONNECTION_RESET ": 2, etc etc – jjujuma

Répondre

2

Les sérialiseurs d'objets font généralement exactement cela. Par exemple JSON sérialise en texte (JS plus précisément) mais il y en a d'autres aussi.

+0

Je suis allé avec XStream, où il est ridiculement facile de le faire. Merci. – jjujuma

0

Essayez here.

La réflexion n'est pas le meilleur choix en termes de performances. En outre, les membres privés de certaines classes peuvent être assez inintéressants et spammer votre sortie s'ils sont inclus dans la valeur de retour toString().

+0

Reflection a des problèmes de performances, mais c'est probablement le seul moyen de mettre en œuvre un formateur vraiment ** universel **. –