У меня есть ArrayList
, который содержит некоторые объекты из класса User
. Когда я печатаю эти объекты я получил:Как правильно печатать содержимое объекта?
[User @ 18fd984, пользователь @ 18fd984]
Как напечатать эти объекты в правильном пути?
У меня есть ArrayList
, который содержит некоторые объекты из класса User
. Когда я печатаю эти объекты я получил:Как правильно печатать содержимое объекта?
[User @ 18fd984, пользователь @ 18fd984]
Как напечатать эти объекты в правильном пути?
Переопределите метод 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);
}
thankyou, я искал что-то вроде этого – divine
Посмотрите на исходный код 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 Гарсиа, перекрывая toString()
метода является то, что вам нужно.
Реализация по умолчанию toString()
метода в Object
класса выглядит следующим образом:
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Может быть, это слишком поздно, чтобы ответить на этот вопрос, но я застрял с той же проблемой, также написал код , с некоторыми дополнительными функциями.
Если вы все еще ищете решение, это общее решение. Это определенно требует некоторого размышления, но это решает цель.
Это в основном ответ только на ссылку. Например, вы можете предоставить основную часть сообщения в блоге в своем ответе или рассказать, как ваш метод отличается от «ToStringBuilder.reflectionToString», упомянутого в другом ответе. – SpaceTrucker
Это правильно - выходной объект Object toString по умолчанию. Определите «правильный» для вашего использования. –
Объект 'toString' возвращает' getClass(). GetName() + '@' + Integer.toHexString (hashCode()) '. Вы должны переопределить этот метод для своего класса за ответ Guido García. –