2016-04-08 6 views
1

フィールドが注釈の束を介して操作されると、lintはfalse warninsを生成することがあります。一般的な例:lintが特定のケースを無視するように設定するにはどうすればよいですか?

@SerializedName("id") @Expose private Integer id; 

フィールドidのみgson.fromJsonを介して割り当てられています()。このような操作はlintには見えないので、警告がスローされます。variable id is never assigned
この特別なケースでは、フィールドが割り当てられているかどうかチェックするのをやめて、@SearializedNameと注釈が付けられていれば、lintを設定したいとします。@SuppressWarnings("unused")

答えて

2

Gsonは、リフレクションを使用して実行時にフィールドをシリアライズします。そのUnusedAssignment検査では、次の基準のいずれかを満たす変数を見つける:

  • 割り当て後に読まれることは決してありません変数
  • 値は、常に次の変数を読む前に、別の割り当てで上書きされ
  • 変数初期化子(上記の2つの理由のいずれかに対して)冗長です - 変数は決して使用されません。

この特定の検査のための警告を取り除くためにあなたの唯一のオプションは、あなたのlint.xmlを更新することにより、または@SuppressWarnings("unused")のいずれかを介して、それらを抑制することです。実際にこれらのことをしたくない場合は、@SerializedNameアノテーションを持つフィールドを無視するcustom Lint inspectionと書くことができます。

このアプローチの欠点は、Gsonによってシリアル化されていないクラスで@SerializedNameを使用する場合、変数が使用されていないと警告が表示されなくなります。また、GSONモデルクラスの先頭に@SuppressWarnings("unused")を追加するよりもはるかに複雑です。

関連する問題