1

重複の可能性:
List と ArrayList 変数の型?

私はHashSet自分のプログラムでそのように初期化しています:

Set<String> namesFilter = new HashSet<String>();

そのように初期化すると、これは機能的に何か違いますか?

HashSet<String> namesFilter = new HashSet<String>();

コレクションのインターフェースについてこれを読んで、インターフェースを理解しました(ここでの使用を除いて)。私はEffective Javaからのこの抜粋を読み、このSOの質問を読みましたが、どちらも賢明ではないと感じています。

Java にベスト プラクティスはありますか? もしそうなら、それはなぜですか? 私の直感ではSet、最初の例では、別のタイプへのキャストが容易になるということです。しかし、繰り返しますが、コレクションである何かにキャストするだけであり、それを再構築することで変換できます。

4

1 に答える 1

6

具体的な型よりもインターフェイスを使用する方が良いと思います。つまり

Set<String> strings = new HashSet<String>();

これを行うことで、Setインターフェイスによって提供される機能のみを使用することを約束します。これにより、後で別のパフォーマンス特性が必要になった場合 (たとえば、代わりに a を使用したい場合TreeSet) に、使用しているセットの種類を簡単に交換できます。コードが壊れることを心配する必要はありません。

于 2012-10-03T09:41:58.650 に答える