10 подсказок по переопределению метода toString() в Java (часть 2)
Мы будем использовать следующий класс, что бы продемонстрировать наш toString пример для Netbeans, Eclipse и Apache’s ToStringBuilder утилиты.
/** * Java программа, демонстрирующая как переопределить метод toString() в Java. * Эта Java программа показывает как вы можете использовать IDE типа Netbeans или Eclipse * и открытую библиотеку типа Apache commons ToStringBuilder для * переопределения toString в Java. * @author Javarevisited.blogspot.com */ public class Country < private String name; private String capital; private long population; private Date independenceDay; public Country(String name)< this.name = name; >public String getName() < return name; >public void setName(String name) public String getCapital() public void setCapital(String capital) public Date getIndependenceDay() public void setIndependenceDay(Date independenceDay) public long getPopulation() < return population; >public void setPopulation(long population) @Override public String toString() < return "Country'; > public void setIndependenceDay(String date) < DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); try < this.independenceDay = format.parse(date); >catch (ParseException ex) < Logger.getLogger(Country.class.getName()).log(Level.SEVERE, null, ex); >> public static void main(String args[]) < Country India = new Country("India"); India.setCapital("New Delhi"); India.setIndependenceDay("15/07/1947"); India.setPopulation(1200000000); System.out.println(India); >>
Метод toString созданный Netbeans IDE
Метод toString созданный Netbeans IDE создает следующий вывод для определенного выше класс:
Если вы посмотрете на приведенный вывод, то увидите, что Netbeans не создает форматированную дату для вас: вместо этого он вызывает метод toString() класса java.util.Date
Метод toString() созданный IDE Rclise
По умолчанию Eclipse создает следующий метод toString:
@Override public String toString()
Вы можете создать код для метода toString в Eclipse нажав на Source —> Generate toString(). Это так же предоставляет несколько возможностей, таких как выбор стиля кода, то есть использование операнда конкатенации или StringBuilder и так далее. Ниже вывод метода toString() который мы только что создали в Eclipse:
Country [name=India, capital=New Delhi, population=1200000000, independenceDay=Tue Jul 15 00:00:00 VET 1947]
Использование ToStringBuilder для переопределения метода Java toString()
Вместе со многими полезными классами, такими как PropertyUtils, EqualsBuilder или HashCodeBuilder Apache так же предоставляет ToStringBuilder который может генерировать код для вывода метода toString() несколькими разными стилями. Давайте посмотрим как выглядит вывод метода toString в простом и много-строчном стиле: Простой стиль:
India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947
test.Country@f0eed6[ name=India capital=New Delhi population=1200000000 independenceDay=Fri Aug 15 00:00:00 VET 1947 ]
NO_FIELD_NAMES_STYLE (стиль без имен полей)
test.Country@1d05c81[India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947]
SHORT_PREFIX_STYLE (стиль с коротким префиксом)
Country[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]
ToStringStyle.DEFAULT_STYLE (стиль по умолчанию)
test.Country@1d05c81[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]
Похожая открытая библиотека от Google — Guava так же предоставляет удобный API для создания кода метода toString в Java.
Когда в Java вызывается метод toString
toString довольно специфичный метод и вызывается из множества JavaAPI методов таких как println(), printf(), журналирование, assert statement, отладчики в IDE, при распечатке коллекций и при конкатенации. Если подкласс не переопределяет toString(), тогда вызывается реализация по умолчанию определенная в классе Object. Многие разработчики используют API для журналирования типа Log4J или java.util.Logger для вывода журналов и часто пропускают здесь Object.
logger.info(«Customer not found:» + customer)
и если Customer не переопределяет toString и не выводит важной информации, такой как customerId, customerName и т.д. то довольно трудно будет диагностировать проблему. Это то, почему всегда стоит переопределять toString в Java. Давайте взглянем на некоторые преимущества в случае, если мы будем это делать.
Преимущества переопределения метода toString
- Как говорилось выше, правильно переопределенный toString помогает в отладке путем вывода важной информации.
- Если важный объект сохранен в коллекции, тогда печать коллекции вызовет toString метод сохраненного объекта, который сможет распечатать важную информацию. Один из классических примеров не переопределенного метода toString это Array в Java, который печатает результат реализации по умолчанию, вместо содержимого массива. Хотя есть несколько способов распечатать содержимое массива с помощью Arrays.toString() и т.п; но поскольку Array является объектом Java, было бы намного лучше, если бы он знал как распечатать себя, так же, как классы коллекций, вроде List или Set.
Это лишь некоторые из преимуществ которые вы получите при реализации или переопределении метода toString в Java, много других преимуществ вы получите и изучите сами. Я надеюсь эти подсказки помогут вам получить большинство ваших реализаций toString. Дайте нам знать если вы знаете какие-то уникальные способы работы с toString которые помогают вам в ваших Java приложениях.
10 подсказок по переопределению метода toString() в Java (часть 1)


10 подсказок по переопределению метода toString() в Java — ToStringBuilder Netbeans Eclipse
Java toString метод
toString метод в Java используется для предоставления ясной и достаточной информации об объекте ( Object ) в удобном для человека виде. Правильное переопределение метода toString может помочь в ведении журнала работы и в отладке Java программы предоставляя ценную и важную информацию. Поскольку toString() определен в java.lang.Object класса и его реализация по умолчанию не предоставляет много информации, всегда лучшей практикой является переопределение данного метода в классе-потомке. Фактически, если вы создаете важный или общий класс типа Order , Trade или Employee , всегда переопределяйте equals, hashCode, compareTo и toString методы в Java. По умолчанию реализация toString создает вывод в виде package.class@hashCode , к примеру для нашего примера toString() , toString() метод класса Country напечатает test.Country@18e2b22 где 18e2b22 это хэш-код объекта в шестнадцатеричном виде, если вы вызовете hashCode метод то он вернет 260943370, что является десятеричным эквивалентом 18e2b22. Эта информация не особо полезна во время поиска какой-либо проблемы. Давайте посмотрим на пример из реальной жизни где вам нужно найти проблему в соединении с сетью, в том случае если вы хотите знать с каким именно хостом и портом пытается соединиться ваша система и если Socket или ServerSocket печатает только информацию toString по умолчанию, то будет невозможно представить реальную проблему, но с переопределенной реализацией toString они могут предоставить полезную информацию, такую как имя хоста и номер порта. В этой Java-консультации мы дадим несколько подсказок по переопределению метода toString с примерами кода.
Как переопределить метод toString в Java:
Печать форматированной даты(т.е. день/месяц/год) вместо «сырого» значения. Это очень полезная подсказка при переопределении Java-метода toString . Обычный toString() класса java.util.Date не выводит форматированную дату и включает много деталей, которые не всегда нужны. Если вы используете частичный DateFormat т.е. dd-MM-yy в вашем приложении, то вы определенно хотели бы видеть этот формат вместо данного по умолчанию. IDE обычно не генерирует форматированный вывод Date и это то, что вам нужно сделать самому, но это того стоит. Прочитайте Как распечатать Date в формате ddMMyy в Java где детально описано форматирование Date в Java. Вы так же можете использовать SimpleDataFormat класс или библиотеку Joda Date time для этого.
Документирование формата toString
Если ваш метод toString() не выводит данные в виде поле=значение, то хорошей идеей будет документирование формата вывода toString , особенно для важных объектов типа Работник или Студент. К примеру если метод toString() класса Работник(Employee) печатает «John-101-Sales-9846387321» то хорошей практикой будет указать формат как «имя-ID-отдел-контакт», но в то же время не давайте клиенту возможность получать информацию из метода toString() , вы должны всегда предоставлять соответствующие методы для получения данных, такие как getName() , getId() , getContact() и так далее, поскольку информация полученная из toString() представления объекта является хрупкой и подвержена ошибкам, так что клиент всегда должен иметь чистый путь получения информации.
Используйте StringBuilder для составления вывода toString()
Если вы пишете код для метода toString() в Java, тогда используйте StringBuilder что бы добавить отдельные атрибуты. Если вы используете IDE вроде Eclipse, Netbeans или IntelliJ тогда использование StringBuilder и метода append() вместо оператора + для составления toString , так же является верным путем. По умолчанию и Eclipse и Netbeans генерируют toString с оператором конкатенации.
Использование аннотации @Override
Использование @Override при переопределении метода в Java это одна из лучших практик в языке. Но эта подсказка не так важна, как это было бы в случае с переопределением методов equals() и compareTo() , поскольку перегрузка вместо переопределения может создать более тонкие, сложно вычисляемые, ошибки. В любом случае лучше использовать аннотацию @Overrride .
Печать содержимого массива, вместо вывода объекта массива
Массив это объект в Java но он не переопределяет метод toString и когда вы печатаете массив, то по умолчанию формат вывода не особо полезен, поскольку мы хотели бы видеть содержимое массива. К слову это еще одна причина почему char[] array предпочтительнее String для хранения чувствительных данных, таких как пароль. Найдите время взглянуть помогает ли печать содержимого массива вашим клиентам или нет и если это имеет смысл, то печатайте содержимое массива вместо самого объекта. Из соображений производительности предпочтительнее использовать Collection такие как ArrayList или HashSet вместо Array для хранения других объектов.
Бонусные подсказки
- Печатать вывод toString в несколько строк или в одну основываясь на его длине.
- Включать полные имена классов в представление toString , другими словами package.class что бы избежать любого непонимания.
- Вы можете пропускать значения null или показывать их, но лучше показывать. Иногда они полезны, поскольку показывают какое поле является null во время какого-то инциндента, к примеру NullPointerException.
- Используйте формат ключ-значение, к примеру member.name=member.value , большинство IDE поддерживают это.
- Включайте унаследованных членов, если вы считаете, что они должны предоставлять необходимую информацию в класс-наследник.
- Иногда объект содержит много необязательных и обязательных параметров, как мы показали в нашем примере шаблона Builder, когда практически невозможно распечатать все поля, в этом случае можно выводить только обязательные поля, тем более, что у нас есть необязательные.
java tutorial — Метод Character.toString() — учебник java — java programming — учиться java — java basics — java for beginners
Метод Character.toString() — возвращает строковый объект (String) и представляет указанное char-значение как одну символьную строку.
Синтаксис
String toString(char ch)
нажмите кнопку ниже, чтобы скопировать код. — от — java tutorials — команда
Copy Code
Параметры
Подробная информация о параметрах:
- ch — примитивный символьный тип (char).
Возвращаемое значение
- В Java Character.toString() возвращает строковый объект.
Пример
public class Test < public static void main(String args[])< System.out.println("Значение \"" + Character.toString('P') + "\" теперь строковый объект."); System.out.println("Значение \"" + Character.toString('r') + "\" теперь строковый объект."); >>
нажмите кнопку ниже, чтобы скопировать код. — от — java tutorials — команда
Copy Code
Получим следующий результат:
Значение "P" теперь строковый объект. Значение "r" теперь строковый объект.
Related Searches to Метод Character.toString()
java tostring override java tostring int tostring () java tostring метод javascript объект tostring java как переопределить метод tostring в java
-
INTERVIEW TIPS
- Final Year Projects
- HR Interview Q&A
- GD Interview
- Resume Samples
- Engineering
- Aptitude
- Reasoning
- Company Questions
- Country wise visa
- Interview Dress Code CAREER GUIDANCE
- Entrance Exam
- Colleges
- Admission Alerts
- ScholarShip
- Education Loans
- Letters
- Learn Languages
Wikitechy Rated 5 / 5 based on 378284 reviews.
World’s No 1 Animated self learning Website with Informative tutorials explaining the code and the choices behind it all.
.to String ( )
Метод to String ( ) преобразует объект в строковое представление. Метод автоматически вызывается JavaScript, когда объект нужно представить в текстовом виде.
Если метод не переопределён, то он возвращает строку формата [object тип ] , где тип — это строка, которая уточняет тип объекта. В подавляющем большинстве вы будете видеть вывод [object Object ] .
Пример
Скопировать ссылку «Пример» Скопировано
const book = title: 'JavaScript: the good parts', author: 'Douglas Crockford'> console.log(`Сейчас читаю $`)// Сейчас читаю [object Object]const book = title: 'JavaScript: the good parts', author: 'Douglas Crockford' > console.log(`Сейчас читаю $book>`) // Сейчас читаю [object Object]
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Метод вызывается без аргументов. Возвращает строковое представление объекта.
Как понять
Скопировать ссылку «Как понять» Скопировано
Существует соглашение, что метод to String ( ) вызывается JavaScript автоматически, если объект находится в контексте, где он должен быть представлен в виде строки. Чаще всего это случаи, связанные с печатью данных на экран или в консоль браузера.
Объекты, в отличие от примитивных типов, сложно преобразовывать в строку. Объект может содержать произвольное количество полей и без программиста непонятно, какие из них важные. Поэтому стандартная реализация метода to String ( ) представляет собой заглушку, печатающую ‘ [ object Object ] ‘ .
Многие структуры данных, базирующиеся на объекте Object , содержат собственные реализации этого метода. Например, Number преобразует число в строку в указанной системе счисления, а массив выводит список элементов через запятую.
Переопределение стандартной реализации
Скопировать ссылку «Переопределение стандартной реализации» Скопировано
Стандартная реализация метода to String ( ) не даёт достаточно информации об объекте даже для использования в отладке программы. Программисты могут переопределить метод to String ( ) , чтобы выводить необходимые данные.
Если мы работаем в ООП стиле, то классу нужно просто добавить метод to String ( ) :
class Book title = '' author = '' constructor(title, author) this.title = title this.author = author > toString() return `«$», автор $` >> const book = new Book('Палата №6', 'А. П. Чехов')console.log(`Читаю $`)// Читаю «Палата №6», автор А. П. Чеховclass Book title = '' author = '' constructor(title, author) this.title = title this.author = author > toString() return `«$this.title>», автор $this.author>` > > const book = new Book('Палата №6', 'А. П. Чехов') console.log(`Читаю $book>`) // Читаю «Палата №6», автор А. П. Чехов
Если вы предпочитаете работать в функциональном стиле, то придётся создать новый тип объекта и переопределить метод to String ( ) в прототипе:
function Book(title, author) this.title = title this.author = author> Book.prototype.toString = function() return `«$», автор $`> const book = new Book('Палата №6', 'А. П. Чехов')console.log(`Читаю $`)// Читаю «Палата №6», автор А. П. Чеховfunction Book(title, author) this.title = title this.author = author > Book.prototype.toString = function() return `«$this.title>», автор $this.author>` > const book = new Book('Палата №6', 'А. П. Чехов') console.log(`Читаю $book>`) // Читаю «Палата №6», автор А. П. Чехов
Под капотом JavaScript обе реализации идентичны и отличаются только использованным синтаксисом.
На практике
Скопировать ссылку «На практике» Скопировано
Николай Лопин советует
Скопировать ссылку «Николай Лопин советует» Скопировано
На практике метод to String ( ) переопределяют нечасто.
Метод не подходит для вывода данных в интерфейсе из-за негибкости, для интерфейса используют специальные библиотеки, такие как React и его альтернативы. Метод отлично подходит для отладочной информации, но современные инструменты разработчика в браузере умеют выводить объект в консоль интерактивно, с возможностью просмотра содержимого.
