リフレクションでフィールドを取得すると、フィールドの順番が何に基づいているのか分からない結果となりました。
Java API仕様を見ると、確かに順序は決まっていないという記述がありました。
この
Class
オブジェクトが表すクラスまたはインタフェースのすべてのアクセス可能な public フィールドをリフレクトする、Field
オブジェクトを保持している配列を返します。返された配列内の要素は、ソートされていたり、特定の順序になっていたりすることはありません。
Javaの標準的な機能ではフィールドの定義順でフィールド情報を取得することはできなさそうです。
以下のように、フィールド名やアノテーションを使えば順序を規定することはできそうです。
Java reflection: Is the order of class fields and methods standardized? - stackoverflow
これを使って、AndroidのParcelableの実装を汎用化しようと思います。
Parcelable#writeToParcel(Parcel, int)やコンストラクタにフィールドを列挙するのを毎回書かずに済むようにします。