Gson用戶指南指出,我們應該為任何可以正常使用Gson的類定義默認的無參數構造函數。甚至,在Gson 類的javadoc中InstanceCreator說,如果我們嘗試對缺少默認構造函數的類實例進行反序列化,則會拋出異常,并且在這種情況下應使用該異常InstanceCreator。但是,我嘗試對缺少默認構造函數的類使用Gson進行測試,并且序列化和反序列化工作都沒有任何麻煩。這是反序列化的代碼。沒有非參數構造函數的類:public class Mushroom { private String name; private double diameter; public Mushroom(String name, double diameter) { this.name = name; this.diameter = diameter; } //equals(), hashCode(), etc.}和一個測試:@Testpublic void deserializeMushroom() { assertEquals( new Mushroom("Fly agaric", 4.0), new Gson().fromJson( "{name:\"Fly agaric\", diameter:4.0}", Mushroom.class));}效果很好。所以我的問題是:我是否可以實際使用Gson而不需要默認的構造函數,或者在任何情況下它都不起作用?
添加回答
舉報
0/150
提交
取消