J'ai un ArrayList
qui contient des objets de la classe User
. Lorsque j'imprime ces objets, j'ai obtenu:
[Utilisateur @ 18fd984, Utilisateur @ 18fd984]
Comment imprimer ces objets de manière correcte?
Remplacez la méthode toString
dans la classe pour produire la sortie que vous préférez, au lieu de la valeur par défaut que Java génère automatiquement. Exemple:
public class User {
private String name;
...
@Override
public String toString() {
return name;
}
}
Pour les objets complexes, Apache Commons Lang fournit quelques méthodes pratiques, si vous utilisez déjà cette dépendance dans votre projet:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
Regardez le code source de la méthode print(Object obj)
de la classe PrintSteam
:
public void print(Object obj)
{
write(String.valueOf(obj));
}
et valueOf(Object obj)
de String
classe:
public static String valueOf(Object obj)
{
return (obj == null) ? "null" : obj.toString();
}
Comme vous le voyez, obj.toString()
est invoquée, et comme le dit @Guido García, la méthode toString()
prioritaire est ce dont vous avez besoin.
L'implémentation par défaut de la méthode toString()
dans la classe Object
est la suivante:
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}