Характерной ошибкой, с которой часто сталкиваются начинающие разработчики на 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() в классе.
Перейти в телеграм, чтобы получить результаты теста



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