首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在实现toString()时使用反射是否有意义?

问在实现toString()时使用反射是否有意义?
EN

Stack Overflow用户
提问于 2013-05-13 17:39:45
回答 4查看 32.9K关注 0票数 49
代码语言:javascript
复制
@Override 
public String toString() { 
    return new Gson().toJson(this);
}

我是否打破了一些好的实践,“约书亚”-pattern的东西,一般的设计模式或其他惯例,简单地这样做作为我的模型对象的默认行为?

无论如何,toString()将只用于我们目前使用的范例(Android)中的调试。这也是我喜欢在JSON中看到对象的原因,因为很多ORM/json持久性将通过http->php/python->mysql和本地SQLite进行。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-22 22:29:53

是。使用GSON/Jackson/Reflections库来实现toString()方法是可以的。

实现toString方法的方法不多。

  1. 反射(Apache库) @重写公共字符串toString(){返回toString}
  2. 基于JSON的实现(GSON,Jackson库) // GSON库用于JSON @重写公共字符串toString(){返回新的com.google.gson.Gson().toJson(this);} // JSON libabry for JSON/YAML @Override toString() {尝试{返回新的com.google.gson.Gson} catch e) { e.printStackTrace();}返回null};
  3. ToStringBuilder (可与一起使用) @重写公共字符串toString() {返回新的toString附加(“field1”,field1)。附加(“field2”,field2)。toString();}
  4. 硬核toString()实现 @重写公共字符串toString() {返回新的StringBuilder() .append(“field1:”+field1 1).append(“field2:”+field1 2) .toString();}
  5. Lombok注释:在编译时生成toString() 导入lombok.ToString;@ToString公共类ToStringExample {}
票数 91
EN

Stack Overflow用户

发布于 2015-04-27 15:26:03

这样做没有坏处。我建议您为Gson实例创建一个静态变量,并启用漂亮的打印:

代码语言:javascript
复制
static Gson gson = new GsonBuilder().setPrettyPrinting().create();

这样,来自toString方法的输出将被格式化。

票数 11
EN

Stack Overflow用户

发布于 2017-11-07 03:48:54

注意:如果在您的GSon ()方法中使用该toString漂亮的打印,那么它在调试器中看起来就像垃圾,因为它将充满换行符。

(对不起,没有足够的代表在上面发表评论)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16527932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档