Yes. It’s OK to use GSON/Jackson/Reflections library to implement toString() method.
There are few ways to implement toString method.
-
Reflections (Apache library)
@Override public String toString(){ return org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(this); } -
JSON based implementation (GSON, Jackson libraries)
// GSON library for JSON @Override public String toString(){ return new com.google.gson.Gson().toJson(this); } // Jackson libabry for JSON/YAML @Override public String toString() { try { return new com.fasterxml.jackson.databind.ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(this); } catch (com.fasterxml.jackson.core.JsonProcessingException e) { e.printStackTrace(); } return null; } -
ToStringBuilder (available with apache-commons library)
@Override public String toString() { return new org.apache.commons.lang3.builder.ToStringBuilder(this). append("field1", field1). append("field2", field2). toString(); } -
Hard-core toString() implementation
@Override public String toString() { return new StringBuilder() .append("field1:"+field1) .append("field2:"+field2) .toString(); } -
Lombok annotations : Generates toString() at compile time
import lombok.ToString; @ToString public class ToStringExample {}