Я - cuurently использование апачского свободного городского населения API (commmons-lang.jar) для печати объекта значения как показано ниже:
ToStringBuilder.reflectionToString(object,ToStringStyle.MULTI_LINE_STYLE))
Но этот код не печатает значение, если объект имеет метод получателя, который возвращает другой объект.
Например, я имею Person
объект это имеет метод получателя, который возвращается Address
объект. Используя вышеупомянутый код, это просто печатает Address
имя объекта. Я ищу печать Address
возразите значениям также. Если я передача person.getAddress()
к вышеупомянутому коду это печатает это, но я хочу видеть все, когда я передаю объект человека.
Какие-либо предложения?
Вы также можете определить базовый класс для всех ваших классов, который будет определять метод toString следующим образом :
public abstract class MyBaseClass{
public String toString(){
return ToStringBuilder.reflectionToString(object,ToStringStyle.MULTI_LINE_STYLE));
}
}
А затем просто сделайте свои классы, чтобы расширить его. При таком подходе весь ваш доменный объект сможет генерировать приятный toString().
Потому что он не генерировать toString
рекурсивно. Либо поищите другой инструмент, либо просто реализуйте (или, лучше, автоматически сгенерируйте IDE) Object # toString ()
для всех их самостоятельно.
Например:
public class Person {
private String name;
private Address address;
// Add/generate ctors, getters and setters.
public String toString() {
return String.format("Person[name: %s, %s]", name, address);
}
}
и
public class Address {
private String street;
private String city;
// Add/generate ctors, getters and setters.
public String toString() {
return String.format("Address[street: %s, city: %s]", street, city);
}
}
таким образом
String personString = person.toString();
и
System.out.println(person);
будут производить что-то вроде
Person[name: goutham, Address[street: Main Street 1, city: New York]]