Czy się da bez nadpisywania toString()?, w debug mode te wartości się wyświetlają .... ale to debugMode . A tak bez debug mode? żeby wyświetlić je na ekranie, np. w System.out.println
Możesz użyć releksji. Jest np. gotowa metoda w bibliotece commons lang:
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/builder/ReflectionToStringBuilder.html
System.out.println("An object: " + ReflectionToStringBuilder.toString(anObject));
Czemu nie trzymać ich w obiekcie, udostępniać bo bezbożnemu i w razie wyciągać i drukować na ekranie?
A dlaczego nie chcesz nadpisywać metody toString()
? Zawsze możesz zaimplementować sobie dowolną inną metodę np show()
.
Albo zrobić publiczne gettery/pola.Albo zrobić wizytatora czytającego prywatne pola obiektu. (tutaj kończą mi się złe pomysły)
Można też serializować do json/xml/czegokolwiek i wypluć na ekran
import lombok.ToString;
@ToString
public class Dog {
}
Można użyć annotation ToString
https://projectlombok.org/features/ToString
bo czasami nie ma możliwości użycia toString() np jeśli jest przetwarzane przez bibliotekę
Raczej strzelam, że robisz coś naokoło.
Napisz jaki konkretnie napotkałes problem. W jakiej bibliotece i czego nie mogłeś zrobić.
toString()
nie jest piękne, ale akurat relatywnie mało problemów robi.
Możesz pobawić się z wzorcem odwiedzającego :
class Animal implements Visitable{
private String name;
private Long numberOfLegs;
public void accept(Visitor visitor){
visitor.put("Name: " + name).put("Number of llegs" + numberOfLegs);
}
}
class Visitor{
public Visitor put(String value){
System.out.println(value);
return this;
}
}