Elettracompany.com

Компьютерный справочник
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Переопределение метода tostring java

Как использовать метод toString в Java?

Может ли кто-нибудь объяснить мне концепцию метода toString() , определенного в классе Object ? Как он используется и какова его цель?

13 ответов

72 Решение Sean Patrick Floyd [2010-09-01 10:12:00]

Возвращает строковое представление объект. В общем, toString метод возвращает строку, которая «textually представляет» этот объект. Результат должен быть кратким, но информационное представление, которое Легко для человека читать. это рекомендовал, чтобы все подклассы переопределить этот метод.

Метод toString для класса Object возвращает строку, состоящую из имя класса, объект которого является экземпляром, знак at-sign `@’, а шестнадцатеричный шестнадцатеричный представление хеш-кода объект. Другими словами, этот метод возвращает строку, равную значению из:

Использование String toString: всякий раз, когда вам требуется исследовать конструктор с именем value в форме String, вы можете просто использовать String toString. для примера.

. скопируйте эту программу в свое затмение и запустите ее. вы получите идеи о String toString.

26 Andreas_D [2010-09-01 10:30:00]

Метод toString() возвращает текстовое представление объекта. Базовая реализация уже включена в java.lang.Object , и поэтому, поскольку все объекты наследуются от java.lang.Object , гарантируется, что каждый объект в Java имеет этот метод.

Переопределение метода всегда является хорошей идеей, особенно когда дело доходит до отладки, поскольку отладчики часто показывают объекты по результату метода toString() . Поэтому используйте значимую реализацию, но используйте ее для технических целей. Логика приложения должна использовать геттеры:

13 cletus [2010-09-01 10:10:00]

Он может иметь возможность использования в контексте приложения, но гораздо чаще используется для целей отладки. Например, когда вы попадаете в точку останова в среде IDE, гораздо легче читать значимые объекты toString() , чем проверять их члены.

Не существует установленного требования к методу toString() . По соглашению, чаще всего он укажет вам имя класса и значение соответствующих членов данных. Чаще всего методы toString() автоматически генерируются в IDE.

Опираясь на конкретный вывод из метода toString() или анализируя его в рамках программы, это плохая идея. Что бы вы ни делали, не сходите по этому маршруту.

10 sxnamit [2015-10-31 18:46:00]

toString() возвращает строковое/текстовое представление объекта. Обычно используемый для диагностических целей, таких как отладка, ведение журнала и т.д., Метод toString() используется для чтения значимых сведений об объекте.

Он автоматически вызывается, когда объект передается println, print, printf, String.format(), assert или оператор конкатенации строк.

Стандартная реализация toString() в классе Object возвращает строку, состоящую из имени класса этого объекта, за которым следует знак @и шестнадцатеричное представление без знака хеш-кода этого объекта, используя следующую логику,

Теперь, переопределяя toString() в классе «Координаты», как показано ниже,

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

Несколько указателей реализации,

  • Вы почти всегда должны переопределять метод toString(). Один из случаев, когда переопределение не требуется, — это классы служебных программ, которые группируют статические методы утилиты, как java.util.Math. Случай переопределения, который не требуется, довольно интуитивно понятен; почти всегда вы знаете.
  • Возвращаемая строка должна быть кратким и информативным, в идеале без объяснения причин.
  • По крайней мере, поля, используемые для установления эквивалентности между двумя разными объектами, т.е. поля, используемые в реализации метода equals(), должны быть выплющены методом toString().

Предоставьте аксессурам/получателям все поля экземпляра, которые содержатся в возвращаемой строке. Например, в классе «Координаты»

Полное описание метода toString() приведено в 10-м номере книги «Эффективное Java ™, второе издание» Джоша Блоха.

Переопределение метода toString () для вывода значений ArrayList в Java

В этой статье мы разберемся с тем, почему нужно переопределить метод toString для отображения содержимого ArrayList .

Задача

Предположим, что мы хотим сохранить несколько записей Employee в Collection , предпочтительно через ArrayList для более быстрого доступа. Каждый раз, когда мы извлекаем записи, они должны выводиться в определенном формате. Есть два варианта реализации.

Вариант 1: Предоставление и реализация метода toString () в классе Employee

  • Переопределите метод toString() ;
  • Определите формат кода внутри метода toString() .

Начнем с кода toString Java для реализации вышеуказанного решения.

Класс Employee

  • Содержит четыре атрибута: id , name , age , designation ;
  • Конструктор с четырьмя аргументами;
  • Переопределяет метод toString () , предоставляющий формат для вывода информации о сотруднике.

Employee.java

Основной класс — для хранения и извлечения записей сотрудников

  • Используется для хранения и извлечения записей сотрудников в toString ;
  • В ArrayList хранятся все записи сотрудников;
  • Для извлечения записей сотрудников используется улучшенный цикл forEach .

StoreAndRetrieveEmployeeRecords.java

Вариант 2: Возвращаемся к нашему основному вопросу

Почему нужно переопределить метод toString() для отображения содержимого ArrayList ?

В приведенном выше примере :

  • Мы переопределили метод toString Java ;
  • Предоставили детали реализации для вывода информации о сотрудниках в определенном формате;
  • Благодаря переопределению метода toString() можно отображать информацию о сотрудниках в желаемом формате.

Пойдем еще дальше и посмотрим, что произошло бы, если бы мы не переопределили метод toString () .

Класс Employee

  • Это тот же класс сотрудников, содержащий четыре атрибута: Id , name , age , designation ;
  • Конструктор с четырьмя аргументами;
  • Но в этом случае не переопределяется метод toString() . Это означает, что по умолчанию будет вызван метод toString() класса Object .

Employee.java

Примечание : метод toString() не переопределяется.

Основной класс — для хранения и извлечения записей сотрудников

Это тот же самый класс, который используется в первом варианте toString Java .

  • Консоль выводится без метода toString() ;
  • Представление информации о каждом сотруднике в шестнадцатеричном формате;
  • Qualified_class_name@HashCode_in_HEX_format ( то есть имя класса, за которым следует символ @ , а затем хэшкод для Object в шестнадцатеричном формате );
  • Поэтому важно переопределить метод toString () для вывода значений объекта ArrayList в желаемом формате.

Другой способ, с помощью которого можно не использовать реализацию метода toString() для вывода значений ArrayList , заключается в том, чтобы включить методы getter и setter и вызвать их соответственно для установки и извлечения значений.

Данная публикация представляет собой перевод статьи « Overriding toString() method to print values of ArrayList in Java » , подготовленной дружной командой проекта Интернет-технологии.ру

Как правильно переопределить toString () в Java?

звучит немного глупо, но мне нужна помощь на моем toString() метод и это очень раздражает. Я попытался посмотреть онлайн, потому что toString Это тот, где он облажался и «не нашел конструктор Kid #2», хотя он есть, и я бы даже сделал что-то еще, и это не работает. Хорошо, что было много так вот мой код:

ок, Так что мой toString выше (я знаю, мой третий параметр выключен, должен быть строкой) выключен. Если я жестко задать значение, в-третьих, это сходит с ума и говорит, что он не может найти это (выше). Итак, как я могу получить дату и разбить ее?

класс вызова это ниже

Я попытался исследовать несколько конструкторов, и это действительно не помогло. Я пытался исследовать toString() методы, и пробовал использовать предыдущий toString() методы логики, которые я создал ранее, но это совершенно новый, так что он никогда не работал.

7 ответов:

The toString должен вернуть a String .

Я предлагаю вам использовать функции вашей IDE для создания toString метод. Не кодируйте его вручную.

например, Eclipse может сделать это, если вы просто щелкните правой кнопкой мыши на исходном коде и выберите Source > Generate toString

Java toString () метод

Если вы хотите представить любой объект в виде строки, метод toString () появляется.

метод toString() возвращает строковое представление объекта.

Если вы печатаете какой-либо объект, компилятор java внутренне вызывает метод toString() на объекте. Поэтому переопределив метод toString() возвращает желаемый результат, это может быть состояние объекта и т. д. зависит от вашего реализация.

преимущество метода Java toString ()

переопределяя метод toString () класса Object, мы можем возвращать значения объекта, поэтому нам не нужно писать много кода.

вывод без метода toString ()

Вы можете видеть в приведенном выше примере #1. печать s1 и s2 печатает значения хэш-кода объектов, но я хочу распечатать значения этих объектов. Поскольку компилятор java внутренне вызывает метод toString() , переопределение этого метода вернет указанные значения. Давайте разберемся в этом на примере, приведенном ниже:

обратите внимание, что toString() в основном связан с понятием полиморфизма в Java. В Eclipse, попробуйте нажать на toString () и щелкните правой кнопкой мыши на нем.Затем нажмите на Open Declaration и посмотрите, откуда берется суперкласс toString ().

Вы можете создать новый объект в toString(). используйте

вы можете изменить возвращаемую строку по мере необходимости. Есть и другие способы хранения даты вместо каландра.

вы не можете вызвать конструктор, как если бы это был обычный метод, вы можете вызвать его только с помощью new чтобы создать новый объект:

но строительство нового объекта из метода toString() не то, что вы хотите делать.

следующий код является образец. Вопрос, основанный на том же, вместо использования преобразования на основе IDE, есть ли более быстрый способ реализации, чтобы в будущем произошли изменения, нам не нужно снова и снова изменять значения?

ну на самом деле вам нужно будет вернуть что-то вроде этого, потому что toString должен вернуть строку

и вы на самом деле делаете что-то неправильно в конструкторе вы устанавливаете переменную, которую пользователь установил на имя, в то время как вам нужно сделать наоборот. То, что вы не должны делать

что нужно делать

надеется, что это поможет спасибо

мы даже можем написать так, создав новый строковый объект в классе и назначив ему то, что мы хотим в конструкторе, и вернуть этот метод в toString, который переопределен

Как использовать метод toString в Java?

может кто-нибудь объяснить мне понятие toString() метод, определенный в Object класса? Как он используется, и какова его цель?

13 ответов:

возвращает строковое представление объект. В общем, toString метод возвращает строку, которая «дословно означает» этот объект. Результат должен быть кратким, но информативное представление, которое легко для человека, чтобы читать. Это рекомендуется, чтобы все подклассы переопределить этот метод.

метод toString для объекта класса возвращает строку, состоящую из имя класса объекта является экземпляром, в знак ‘@’, и беззнаковое шестнадцатеричное число представление хэш-кода объект. Другими словами, этот метод возвращает строку, равную значению оф:

использование строки toString: всякий раз, когда вам требуется изучить конструктор с именем value в Строковой форме, вы можете просто использовать String toString. для примера.

. скопируйте эту программу в Eclipse и запустить его. вы получите идеи о String toString.

The toString() метод возвращает a текстовое представление объекта. Базовая реализация уже включена в java.lang.Object и так, потому что все объекты наследуют от java.lang.Object гарантируется, что каждый объект в Java имеет этот метод.

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

он может дополнительно использоваться в контексте приложения, но гораздо чаще он используется для целей отладки. Например, когда вы нажмете точку останова в IDE, гораздо проще прочитать значимый toString() объектов, чем это для проверки своих членов.

нет установленного требования для того, что toString() метод должен делать. По соглашению, чаще всего он сообщит вам имя класса и значение соответствующих членов данных. Чаще всего, toString() методы автоматически генерируются в IDE.

полагаясь на конкретный вывод из A toString() метод или разбор его в программе-это плохая идея. Что бы вы ни делали, не идут по этому пути.

toString () возвращает строковое/текстовое представление объекта. Обычно используется для диагностических целей, таких как отладка, ведение журнала и т. д., метод toString () используется для чтения значимых сведений об объекте.

он автоматически вызывается, когда объект передается в println, print, printf, String.format (), assert или оператор конкатенации строк.

реализация по умолчанию toString() в объекте класса возвращает строку состоит из имени класса этого объекта, за которым следует @ sign и беззнаковое шестнадцатеричное представление хэш-кода этого объекта с использованием следующей логики,

теперь, переопределяя toString () в классе координат, как показано ниже,

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

несколько советов по выполнению,

  1. вы должны почти всегда переопределять метод toString (). один из случаев, когда переопределение не требуется, — это служебные классы, которые группируют статические служебные методы, как java.утиль.Математика. Случае переопределение не требуется довольно интуитивно; почти всегда вы знаете.
  2. возвращаемая строка должна быть краткой и информативной, в идеале самоочевидной.
  3. по крайней мере, поля, используемые для установления эквивалентности между двумя различными объектами, т. е. поля, используемые в равна() реализация метода должна быть выплюнута методом toString ().

предоставить методы доступа / геттеры для всех полей экземпляра, которые являются содержится в возвращенной строке. Например, в классе координат

всестороннее освещение метода toString () находится в пункте 10 книги «эффективная Java™, второе издание» Джоша Блоха.

всякий раз, когда вы обращаетесь к объекту (не являющемуся строкой) в строковом контексте, то toString() вызывается компилятором под обложками.

работает, и путем переопределения стандартного toString() из объекта в ваших собственных классах вы можете сделать свои объекты полезными и в строковых контекстах.

(и считайте это черным ящиком! Никогда, никогда не используйте содержимое для чего-либо другого, кроме представления человеку)

кодировка:

студент.java:

выход:

[Steve 12 Daniel, Sachin 10 Tendulkar]

[Steve 12 Daniel, Sachin 10 Tendulkar, Yuvi 12 Bhajji]

Если вы не используете toString () в Pojo(Student.java) класс, вы получите вывод, как [com.steve.test.Student@6e1408, com.steve.test.Student@e53108] . чтобы избежать такого рода проблемы, мы используем toString () метод.

правильно переопределить метод toString, который может помочь в ведение журнала и отладки Java-приложений.

помимо того, что Клетус ответил в отношении отладки, он используется всякий раз, когда вы выводите объект, например, когда вы используете

основной целью toString является создание строкового представления объекта, означает, что возвращаемое значение всегда является строкой. В большинстве случаев это просто класс объекта и имя пакета, но в некоторых случаях, таких как StringBuilder, вы получите фактически текст строки.

Если вы сначала изучите Python, а затем Java. Я думаю, что он играет ту же роль, что и __str__() метод в Python, это магический метод как __dict__() и __init__() но для ссылки на строку, представляющую объект.

the toString() преобразует указанный объект в строковое значение.

Методы

Класс может содержать методы — один, два, три и больше в зависимости от сложности класса. Название метода всегда завершается двумя круглыми скобками, после которых идет блок кода, обрамлённый фигурными скобками. Например, метод sayMeow() класса Cat выводит мяуканье кошки. Внутри имени метода могут быть параметры, например, sayMeow(3) — кошка мяукает три раза. Параметров может быть несколько, тогда они разделяются запятыми.

Общая форма объявления метода выглядит следующим образом:

Метод может не иметь параметров, в этом случае используются пустые скобки. Модификатор определяет видимость метода (public, private). Если модификатор не указан, то считается, что метод имеет модификатор private в пределах своего пакета.

Методы могут вызывать другие методы.

Каждый метод начинается со строки объявления внутри круглых скобок, которую называют сигнатурой метода:

Если рассмотреть данный метод, то можно сказать следующее. Ключевое слово public означает, что метод доступен для любого класса. Ключевое слово static означает, что нам не нужно создавать экземпляр (копию) объекта Cat в памяти. Ключевое слово void означает, что метод не возвращает никаких данных. Именем метода является слово перед круглыми скобками.

Если метод возвращает какие-то данные, то в теле метода используется оператор return значение, где значение — это возвращаемое значение. Тогда вместо void нужно указать возвращаемый тип.

Вспомним наш класс Box, в котором определены высота, ширина и глубина ящика. Зная эти величины, мы вычисляли объём коробки самостоятельно. Но мы можем расширить возможности класса, чтобы он сам мог вычислить объём внутри класса и предоставить нам готовые данные. Давайте добавим в класс новый метод:

Теперь пробуем вычислить объём коробки с помощью готового метода, который есть в классе:

Мы уже не вычисляем объём вручную, за нас это сделает класс Box, у которого есть готовый метод для вычисления объёмов.

Обращение к методу осуществляется как и к переменной через точку. Наличие круглых скобок позволяет различать метод от имени переменной. То есть, если вы увидите запись:

Выше приведён немного искусственный пример, так как опытный программист никогда не назовёт переменную именем getVolume. Существует рекомендация, что для методов в начале имени нужно использовать глагол и начинаться имя должно с маленькой буквы — переменные так называть не следует.

Использование параметров

Параметры позволяют работать с различными данными. Допустим, мы хотим вычислить площадь прямоугольника со сторонами 3 и 5 см.

Метод работает, но область его применения слишком ограничена. Мы сможем вычислять площадь только одного прямоугольника с жёстко заданными размерами. Но прямоугольники бывают разными и нам нужен универсальный метод. Добиться решения задачи можно с помощью параметров. Перепишем метод следующим образом:

Теперь мы можем вычислять площадь любого прямоугольника, зная его размеры. Возьмём тот же прямоугольник со сторонами 3 и 5 см и вычислим его площадь:

В правильно написанных классах стараются избегать доступа к переменным класса напрямую. Следует использовать методы, которые позволяют избежать ошибок. В нашем классе Box использовались отдельные переменные width, height, depth. Код с использованием этих переменных слишком громоздкий, кроме того вы можете забыть про какую-нибудь переменную. Добавим в класс новый метод, который упростит наш код для вычисления объёма ящика:

Пробуем класс в действии:

Теперь мы не обращаемся к отдельным переменным класса, а вызываем метод setDim() для установки размеров ящика, после чего можно вызвать метод getVolume() для вычисления объёма. Естественно, вы можете реализовать свою логику в классе. Например, вы можете создать метод getVolume() с параметрами, которые отвечают за размеры ящика и возвращать сразу готовый результат.

Перегрузка методов

Метод — имя для действия: прыгнуть, мяукнуть, отформатировать диск. Использование имён при написании кода упрощает её понимание и модификацию. Работа разработчика схожа с работой писателя — в обоих случаях требуется донести свою мысль до читателя/приложения.

Часто одно и то же слово имеет несколько разных значений — оно перегружено. Например, мы говорим «вымыть посуду» и «вымыть кота». Было бы глупо говорить «посудовымыть посуду» или «котовымыть кота», чтобы подчеркнуть разницу. Также и с методами. Можно создавать методы с одинаковыми именами, но с разным набором аргументов.

Java, как и многие языки программирования, разрешает создавать внутри одно класса несколько методов с одним именем. Главное, чтобы у них различались параметры. Параметры могут различаться типами или количеством аргументов. Будьте внимательны, если вы зададите различные типы для возвращаемого значения, то этого будет недостаточно для создания перегруженной версии метода. Когда Java встречает вызов перегруженного метода, то выбирает ту версию, параметры которой соответствуют аргументам, использованным в вызове.

Создадим класс Cat с набором перегруженных методов:

Вы можете вызвать любой метод из класса:

Если присмотреться, то можно догадаться, какая именно версия метода вызывается в каждом конкретном случае.

Аналогично, перегрузка используется и для конструкторов.

Методы с переменным числом параметров

Можно создавать методы с переменным числом параметров. В этом случае используется многоточие.

По сути, создаётся массив типа Object[].

Создадим метод, вычисляющий и возвращающий максимальное из произвольного количества значений.

До Java 5 использовался следующий способ.

Подобный код может встречаться в старых проектах, но в Android практически не используется.

Метод toString()

Каждый класс реализует метод toString(), так как он определён в классе Object. Но использовать метод по умолчанию не слишком удобно, так как не содержит полезной информации. Разработчики предпочитают переопределять данный метод под свои нужды. Сам метод имеет форму:

Вам остаётся возвратить объект класса String, который будет содержать полезную информацию о вашем классе. Давайте возьмём для примера класс Box, созданный выше:

Теперь можете узнать о классе Box:

Метод очень часто используется при создании собственных классов и вам тоже придётся прибегать к этому способу.

Как вернуть из метода больше одного значения?

Методы в Java возвращают одно значение. А если хочется сразу вернуть сразу два и более значений? Например, у нас имеется массив чисел и мы хотим написать метод, который сразу возвращает минимальное и максимальное значение из него.

Одно из решений заключается в том, что нужно «запаковать» два значения полученные в одном методе с помощью конструктора специального класса, а затем «распаковать» их в другом методе, при обращении к конструктору.

Читать еще:  Разработка игр на языке javascript скачать
Ссылка на основную публикацию
Adblock
detector