getActivity / GsonFactory

Gson 解析容错框架,愿从此再无 Json 解析报错
Apache License 2.0
674 stars 66 forks source link

[疑惑]:<init> argument 4 has type int, got null, #30

Closed EHG613 closed 1 year ago

EHG613 commented 1 year ago

问题描述【必填】

data class SumInfo(
        var columnistCount: Int = 0,
        var courseCount: Int = 0
    ) 

需求场景需要支持默认值为0;解析的时候会有警告信息

java.lang.IllegalArgumentException: method com.dop.data.user.User$SumInfo.<init> argument 4 has type int, got null

警告来自下面的代码

 Object[] parameterValue = new Object[parameterLength];
                // 这个参数是标记位,用于判断有没有设置默认值进去,会进行 & 位运算进行判断
                // 这里设置成 Integer.MAX_VALUE,Integer.MAX_VALUE & 大于 0 的值,都会等于那个值
                // 这样就能每次都能走到设置默认值那里
                // Github 地址:https://github.com/getActivity/GsonFactory/issues/27
                parameterValue[parameterLength - 2] = Integer.MAX_VALUE;
                // 这个参数 DefaultConstructorMarker 类型,用于标记构造函数是 Kotlin 语法自动生成的
                parameterValue[parameterLength - 1] = null;

                for (int i = 0; i < parameterTypes.length - 2; i++) {
                    Class<?> parameterType = parameterTypes[i];
                    parameterValue[i] = getTypeDefaultValue(parameterType);
                }

                instance = (T) constructor.newInstance(parameterValue);

请问要怎么正确的处理默认值0的情况呢?

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

issue 列表中是否有人曾提过类似的问题【必答】

是否已经搜索过了 issue 列表但还未能解决的【必答】

getActivity commented 1 year ago

小伙子,这个警告会带来什么实际性的影响吗?

EHG613 commented 1 year ago

小伙子,这个警告会带来什么实际性的影响吗?

未发现有实质性的影响,只是控制台的warning过多

getActivity commented 1 year ago

那就不去管它