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