新しいノートブック

Android大好き

リフレクションで生成した文字列に何かの参照の跡のようなものがぶちこまれてる件

リフレクションでモデルクラスから直接GETリクエストを作っちゃうようなケース。
お尻に全然知らないパラメータがくっついてました。

原因

同じ症状にぶち当たってる人を発見した。
http://stackoverflow.com/questions/34647546/a-weird-field-appear-in-android-studio どうやらAndroid Studio 2.0でInstrant Runをサポートするための参照が追加されてるようだ。

備考

Class<? extends Object> clazz = obj.getClass();
clazz.getDeclaredFields();

上記の配列をデバッガで確認すると、

public static transient volatile com.android.tools.fd.runtime.IncrementalChange.{…}.hoge.$change

という参照が確認出来る。

対策

File > Settings > Build, Execution, Deployment > Instant Run
Enable Instant Run to hot swap code/resource change on deploy(default enabled)
チェックを外す

もしくはUSBを抜く。繋いでる時だけ発生するので最初はわけ分からなかった。

リフレクションのご利用は計画的に。