Подтвердить что ты не робот

Как правильно печатать содержимое объекта?

У меня есть ArrayList, который содержит некоторые объекты из класса User. Когда я печатаю эти объекты, я получил:

[Пользователь @18fd984, Пользователь @18fd984]

Как правильно печатать эти объекты?

4b9b3361

Ответ 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));
}

и valueOf(Object obj) класса String:

public static String valueOf(Object obj)
{
    return (obj == null) ? "null" : obj.toString();
}

Как вы видите, вызывается obj.toString(), и, как утверждает @Guido García, переопределение метода toString() - это то, что вам нужно.

Стандартная реализация метода toString() в классе Object выглядит следующим образом:

public String toString()
{
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

Ответ 3

Может быть, слишком поздно, чтобы ответить на вопрос, но я столкнулся с той же проблемой, также написал некоторый код с некоторыми дополнительными функциями.

Если вы все еще ищете решение, это общее решение. Это определенно требует некоторого размышления, но это решает цель.

Общий метод toString() в java