java - Gson 为什么不将方法都写成静态方法?
怪我咯
怪我咯 2017-04-17 17:40:24
[Java讨论组]

我一直很困惑为啥谷歌不将Gson类中的方法改为静态方法,用起来不是更方便吗?
我的前同事有好多人在结合httpclient使用时都是在发送消息的类中定义了一个属性:
private static Gson gson = new Gson();
调用时,就直接
gson.toJson(obj);
这种使用方法有没有什么潜在问题?
求解答啊...

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(5)
天蓬老师

多线程同时调用会有问题吧
以下摘自Gson User Guide:

Sometimes you need to share state across custom
serializers/deserializers (see this discussion). You can use the
following three strategies to accomplish this:
1.Store shared state in static fields
2.Declare the serializer/deserializer as inner classes of a parent type, and use the instance fields of parent type to store shared state
3.Use Java ThreadLocal
1 and 2 are not thread-safe options, but 3 is.

天蓬老师

容易出现变量共享冲突

迷茫

弱弱的问一下,gson 是 json 写错了 还是有一种叫 gson 的语言?

伊谢尔伦

我觉得可能是效率的问题,一旦写为 static ,则一加载就在内存中了,而这无疑会降低运行速度!

PHPz

一个Gson object内部可能有自定义Adapter,见GsonBuilder文档

如果你只需要默认的new Gson(), 可以只用一个singleton没有问题

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号