@Override
public String toString() {
return new Gson().toJson(this);
}
我是否打破了一些好的做法,“Joshua”-pattern 事物,一般设计模式或其他约定,只是将其作为我的模型对象的默认行为?
toString()
无论如何只会用于在我们当前使用的范例(Android)中进行调试。这也是我喜欢在 JSON 中看到对象的原因,因为很多 ORM/json 持久性将通过 http->php/python->mysql 和本地 SQLite 发生。
最佳答案
是的。使用 GSON/Jackson/Reflections 库实现 toString() 方法即可。
实现 toString 方法的方法很少。
反射(Apache 库)
@Override public String toString(){ return org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(this); }
基于 JSON 的实现(GSON、Jackson 库)
// 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(可用于 apache-commons 库)
@Override public String toString() { return new org.apache.commons.lang3.builder.ToStringBuilder(this). append("field1", field1). append("field2", field2). toString(); }
硬核 toString() 实现
@Override public String toString() { return new StringBuilder() .append("field1:"+field1) .append("field2:"+field2) .toString(); }
Lombok 注释:在编译时生成 toString()
import lombok.ToString; @ToString public class ToStringExample {}
关于java - 实现 toString() 时使用反射有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16527932/