Java: print_r?
dernière fois que j'ai demandé comment faire pour remplir une structure de données ici. Maintenant, je voudrais savoir si il y a quelque chose en Java, comme le print_r - je utiliser en PHP, pour représenter ce que j'ai renseigné dans les Cartes et les listes sans avoir à faire de mon propre algorithme.
Des idées?
OriginalL'auteur Jean Paul Galea | 2008-09-29
Vous devez vous connecter pour publier un commentaire.
Appeler toString sur la collection doit retourner une chaîne de caractères contenant tous les éléments de la chaîne de représentations.
Cela ne fonctionne pas avec construit-dans des tableaux bien, comme ils n'ont pas les méthodes toString remplacer et va tout simplement vous donner une adresse de mémoire.
ClassName@<address_value>
. Ce qu'il faut utiliser sur une classe personnalisée?Pour les classes personnalisées, vous devez remplacer la
toString()
méthode pour faire retour de ce que vous voulez.OriginalL'auteur workmad3
Selon exactement ce que vous voulez faire, la solution pourrait être assez simple. Les éléments suivants ne produira pas le résultat mis en forme que print_r fournit, mais il vous permettra de sortie de la structure de listes, de tableaux et de cartes:
Pour d'autres types d'objets que vous pourriez utiliser la réflexion pour créer un utilitaire à cette fin.
OriginalL'auteur laz
Il y a vraiment de différence entre toString() en java, et print_r() en PHP.
Notez qu'il est également __toString() en php qui est équivalent à toString() en java, donc ce n'est pas vraiment la réponse.
print_r est utilisé lorsque nous avons une structure d'objets et nous aimons rapidement pour voir le graphe d'objets avec leurs valeurs.
La mise en œuvre de toString en java pour chaque objet n'a pas le pouvoir de les comparer avec print_r.
Au lieu d'utiliser gson. Il fait le même travail que print_r
De cette façon, vous n'avez pas besoin de mettre en œuvre toString pour chaque objet, vous devez le tester.
Voici la documentation:
http://sites.google.com/site/gson/gson-user-guide
Démo classes (en java):
Voici la sortie en php avec print_r:
Voici la sortie en java avec gson:
OriginalL'auteur darpet
Vous pouvez essayer la bonne vieille Apache Commons Lang ToStringBuilder.
OriginalL'auteur Tim Mooney
Mon prendre pour un Java
print_r
comme la fonctionnalité, c'est la classe RecursiveDump que j'ai écrit.Il n'est pas parfait, mais il fonctionne bien pour moi. L'utilisation est:
Elle pourrait être améliorée en utilisant les génériques, je l'ai écrit il y a plusieurs années, avant que je savais sur eux. Aussi, tout en essayant de traiter avec certains types de Collection, avec des Objets, il suffit d'appeler le
toString()
méthode.J'ai pensé à utiliser la Réflexion pour extraire les noms de champ pour les classes sans une bonne
toString()
, mais depuis Spring Roo @RooToString pouvez écrire letoString()
méthode pour vous...Bien sûr, l'alternative est d'utiliser l'inspecteur de l'outil de un débogueur, mais est parfois plus rapide d'utiliser des estampes.
OriginalL'auteur stivlo
D'autres ont mentionné la
toString()
méthode. C'est vraiment utile que lorsque l'objet implémentetoString()
. Si elle n'a pas été mis en œuvre correctement, vous obtiendrez quelque chose comme ceci:java.lang.Object@1b9240e
.Même si c'est un peu fastidieux, il est encore facile à mettre en œuvre
toString()
dans vos propres classes, mais la troisième partie des classes ne sera pas toujours le mettre en œuvre. Vous êtes beaucoup mieux d'utiliser un débogueur. La seule raison pour laquelle les choses commeprint_r
existe même en PHP, c'est en raison de l'absence d'un véritable débogueur. Je pense que vous trouverez que la possibilité de définir des points d'arrêt au lieu d'utiliser un tas de diagnostic des instructions d'impression est beaucoup plus rapide de flux de travail et plus propre code.Un bon set de journalisation est inestimable lorsqu'il est utilisé avec un débogueur car il vous permet de suivre jusqu'à une certaine fonction beaucoup plus rapide que l'exécution pas à pas avec un débogueur. La journalisation est également utile dans le mode de production de code, comme c'est souvent le seul enregistrement d'une émission.
OriginalL'auteur jm4
Je ne sais pas d'un équivalent de print_r en java.
Mais...
Chaque objet dispose d'un défaut de mise en œuvre de la méthode toString (), la liste et la carte des implémentations imprimer leur contenu si vous appeler toString() pour eux.
Si vous avez besoin d'informations de débogage imprimé, toString() peut être l'endroit que vous cherchez.
OriginalL'auteur Daniel Hiller
Il n'y a pas d'équivalent pour print_r en Java.
Mais pour des cartes ou des listes, vous pouvez utiliser le foreach en boucle comme ceci:
la boucle foreach en java (OMI de toute façon) un beaucoup plus propre syntaxe que les itérateurs, et je crois qu'il utilise les itérateurs sous la surface de toute façon.
OriginalL'auteur DeeCee
Pour les tableaux, le plus simple est de Matrices.asList(tableau).toString() .
J'ai généralement de mettre en œuvre les méthodes toString() sur les objets, j'ai comme d'habe en debug sorties. Pour les objets générés (JAXB, etc.) si peut-être besoin de faire une classe utilitaire pour l'imprimer.
OriginalL'auteur Hans-Peter Störr