toString приклади в Java
Ми будемо використовувати наступний клас, щоб продемонструвати наш приклад 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) {this.name = name;} public String getCapital() {return capital;} public void setCapital(String capital) {this.capital = capital;} public Date getIndependenceDay() {return independenceDay;} public void setIndependenceDay(Date independenceDay) {this.independenceDay = independenceDay;} public long getPopulation() { return population; } public void setPopulation(long population) {this.population = population; } @Override public String toString() { return "Country{" + "capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + '}'; } 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 створює такий висновок для певного класу:
Country{capital=New Delhi, population=1200000000, independenceDay=Fri Aug 15 00:00:00 VET 1947}
Якщо ви подивитеся на наведений висновок, то побачите, що Netbeans не створює форматовану дату для вас: натомість він викликає метод toString() класу java.util.Date
Метод toString() створений IDE Rclise
За замовчуванням Eclipse створює наступний метод toString:
@Override public String toString() { return "Country [name=" + name + ", capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + "]"; }
Ви можете створити код для методу 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 допомагає у налагодженні шляхом виведення важливої інформації.
- Якщо важливий об'єкт збережено в колекції, тоді друк колекції викликає вString метод збереженого об'єкта, який зможе роздрукувати важливу інформацію. Один із класичних прикладів не перевизначеного методу toString - це Array в Java, який друкує результат реалізації за замовчуванням, замість вмісту масиву. Хоча є кілька способів роздрукувати вміст масиву за допомогою Arrays.toString() тощо; але оскільки Array є об'єктом Java, було б набагато краще, якби він знав як роздрукувати себе, так само як класи колекцій, на кшталт List або Set .
Це лише деякі з переваг, які ви отримаєте при реалізації або перевизначенні методу toString в Java , багато інших переваг ви отримаєте і вивчите самі. Я сподіваюся, ці підказки допоможуть вам отримати більшість ваших реалізацій toString. Дайте нам знати, якщо ви знаєте якісь унікальні способи роботи з toString які допомагають вам у ваших Java додатках.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ