У меня есть ArrayList, который содержит некоторые объекты из класса User. Когда я печатаю эти объекты, я получил:
[Пользователь @18fd984, Пользователь @18fd984]
Как правильно печатать эти объекты?
Ответ 1
Переопределите метод toString в классе для получения предпочтительного результата вместо значения по умолчанию, которое автоматически генерирует Java. Пример:
public class User {
private String name;
...
@Override
public String toString() {
return name;
}
}
Для сложных объектов Apache Commons Lang предоставляет некоторые удобные методы, если вы уже используете эту зависимость в своем проекте:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
Ответ 2
Посмотрите исходный код метода print(Object obj) из класса PrintSteam:
public void print(Object obj)
{
write(String.valueOf(obj));
}
Может быть, слишком поздно, чтобы ответить на вопрос, но я столкнулся с той же проблемой, также написал некоторый код с некоторыми дополнительными функциями.
Если вы все еще ищете решение, это общее решение. Это определенно требует некоторого размышления, но это решает цель.