Android私はArrayList
にParcelable
オブジェクトのうちIntent
のみを配置できます
Intent putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value);
List<? extends Parcelable>
を入力できません。
Parcelable
からIntent
オブジェクトのリストを取得するprivateメソッドがあります(つまり、メソッドは独自のクラスで使用されます)。
先ほど言ったように、ArrayList
には常にIntent
があります。このメソッドの戻り値の型をArrayList<>
として宣言する必要がありますか?またはList<>
?
ArrayList
はArrayList
でもあるので、List
の方が良いと思います。しかし、フィールドタイプを最も一般的な可能なタイプとして宣言する必要があることをよく読みます。 つまり、Collection<>
ではなくList<>
(または、順序付けされたコレクションが必要な場合はArrayList<>
)。しかし、このメソッドの戻り値の型に対してそうする理由は何もありません。
宣言(戻り値の型、APIコメント、またはコントラクトのいずれであるか)は、何らかの成果を上げるか、サービスを実行するという約束です。特定の戻り値の型を宣言することは、呼び出し側にとって十分な一般的な型を宣言するよりも大きな約束です。
それが本当にあなたがしていることである場合そして常にあなたがしていることになります、それで問題はありません。しかし、ある日、新しいより優れたコンテナタイプを含む方法でプログラムをリファクタリング、拡張、または改善したい場合、CoolNewList
構造体に切り替えるとクライアントコードが破損するため、実行できません。 。次に、「ああ、私はStackExchangeで賢明な人々の話を聞いて、具体的な型を自慢するのではなく、最小限の約束をしたならいいのに!」と言いますが、それでは遅すぎます。次に、若いプログラマーに約束を最小限にとどめるようアドバイスし、ライフサイクルを続けます。