从Gson 2.3.1开始。
不管GSON文档是这么说,如果你的类没有一个无参数的构造函数,你还没有注册的任何
InstanceCreater对象,那么它会创建一个
ObjectConstructor与(它构造你的对象)
UnsafeAllocator,它使用反射来获取
allocateInstance的方法类
sun.misc.Unsafe来创建您的类的实例。
这个
Unsafe类是绕着缺乏无参数的构造函数,有许多其他用途的危险。
allocateInstance状态
分配实例,但不运行任何构造函数。如果尚未初始化该类,则将其初始化。
因此,它实际上不需要构造函数,并且会绕过您的两个参数构造函数。在这里看到一些例子。
如果您确实有一个无参数的构造函数,那么Gson将使用
ObjectConstructor,
Constructor通过调用以下命令使用该默认值
yourClassType.getDeclaredConstructor(); // ie. empty, no-args
我的2美分:
按照Gson的说法,并使用无参数构造函数创建类或注册一个
InstanceCreator。使用,您可能会发现自己处于不利位置
Unsafe。



