java - Gson 为什么不将方法都写成静态方法?
怪我咯
怪我咯 2017-04-17 17:40:24
0
5
414

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

怪我咯
怪我咯

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

全部回覆(5)
Peter_Zhu

多執行緒同時呼叫會有問題吧
以下摘自Gson User Guide:

有時您需要跨自訂
序列化器/反序列化器共用狀態(請參閱此討論)。您可以使用
以下三種策略來實現此目的:
1.將共用狀態儲存在靜態欄位中
2.將序列化器/反序列化器宣告為父類型的內部類,並使用父類型的實例欄位來儲存共享狀態
3.使用Java ThreadLocal
1和2不是執行緒安全選項,但3是。

Peter_Zhu

容易出現變數共享衝突

迷茫

弱弱的問一下,gson 是 json 寫錯了 還是有一種叫 gson 的語言?

伊谢尔伦

我覺得可能是效率的問題,一旦寫為 static ,則一加載就在內存中了,而這無疑會降低運行速度!

PHPzhong

一個Gson object內部可能有自訂Adapter,請參閱GsonBuilder文件

如果你只需要預設的new Gson(), 可以只用一個singleton沒有問題

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板