如果字段是通过一堆注释操作的,有时lint会产生错误的警告。举个例子:
id
字段variable id is never assigned
仅通过gson.fromJson()分配。这种操作对于lint是不可见的,因此它会发出警告@SearializedName
所以我想配置lint,在这种特殊情况下,忽略检查是否分配了字段,如果用@SuppressWarnings("unused")
注释(请不要建议原始{{1}}必须为每个字段设置manualy如果使用了字段,将阻止检查)
答案 0 :(得分:2)
Gson使用反射来序列化字段,该反射在运行时发生。 UnusedAssignment检查发现满足以下任何条件的变量:
- 分配后永远不会读取变量
- 在下一个变量读取
之前,该值始终会被另一个赋值覆盖- 变量初始值设定项是冗余的(出于上述两个原因之一) - 从不使用该变量。
除去此特定检查的警告的唯一选择是通过更新lint.xml或通过@SuppressWarnings("unused")
来禁止它们。如果你真的不想做其中任何一件事,那么可以写一个custom Lint inspection来忽略带有@SerializedName
注释的字段。
这种方法的缺点是如果你想在一个没有被Gson序列化的类中使用@SerializedName
,那么如果一个变量未被使用,你就不会再收到警告。它比将@SuppressWarnings("unused")
添加到GSON模型类的顶部要复杂得多。