为了账号安全,请及时绑定邮箱和手机立即绑定

Gson是否必须使用默认的无参数构造函数?

Gson是否必须使用默认的无参数构造函数?

神不在的星期二 2019-10-11 10:00:14
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而不需要默认的构造函数,或者在任何情况下它都不起作用?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 1284 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信