Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
25 Апр 2024
2 мин
183

Печать объектов Java без получения «SomeType@2f92e0f4»

Характерной ошибкой, с которой часто сталкиваются начинающие разработчики на Java, является получение вывода вида «SomeType@2f92e0f4» при попытке вывести

Характерной ошибкой, с которой часто сталкиваются начинающие разработчики на Java, является получение вывода вида «SomeType@2f92e0f4» при попытке вывести на печать объект. Приведем пример.

Есть класс Book:

public class Book {
  private String title;

  // конструктор и геттеры/сеттеры пропущены
}

И попытка вывести на печать экземпляр этого класса:

System.out.println(myBook);

Вместо ожидаемого названия книги в консоли отображается что-то вроде com.foo.Book@2f92e0f4.

Подобная ситуация может возникнуть и при попытке вывести на печать массив объектов:

Book[] books = //...
System.out.println(books); 

Вывод будет выглядеть примерно так: [Lcom.foo.Book;@28a418fc.

Что это значит?

Это стандартное представление объекта в Java. com.foo.Book — это имя класса, а 2f92e0f4 — хеш-код объекта.

Как вывести информацию об объекте?

Для этого нужно переопределить метод toString() в классе. Этот метод возвращает строковое представление объекта. По умолчанию он выводит имя класса и хеш-код объекта, как описано выше. Но можно изменить его так, чтобы он возвращал информацию, которую вы хотите видеть.

Пример реализации:

@Override
public String toString() {
  return "Book{" +
         "title='" + title + '\'' +
         '}';
}

Теперь, вызывая System.out.println(myBook);, вы получите Book{title='Название книги'}.

Для печати массивов объектов можно использовать вспомогательные методы из класса java.util.Arrays. Например, Arrays.toString(books);.

Таким образом, для получения информации об объекте или массиве объектов при печати, следует переопределить метод toString() в классе.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий