58
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

なぜ ArrayList は List 型で宣言するのか

Last updated at Posted at 2016-10-05

ArrayList を使う際、

List<E> arrayList = new ArrayList<>();

と List 型で宣言しすべきと一般的に言われています。

なぜそうなったのか気になったので、調べた結果をまとめました。

ArrayList を List 型で宣言すると...

  1. 「これは List インターフェースにある機能だけで充分で、ArrayList 等の独自の機能は必要としていない」ということを明示できる
  2. 後で型が変わる場合に変更範囲がより少なくなる

主に上記の2点のメリットを得ることが出来ます。

List 型のメソッドだけで事足りる場合の ArrayList の扱い

ArrayList を使う際、ただ要素を Add して取り出すだけといった用途の場合があるかと思います。
そういった際は List インターフェースのメソッドだけで事足りるのですが、もちろんインターフェースは実装しなければ使えないため、List インターフェースを継承した、ArrayList や LinkedList といったオブジェクトを代入する必要が生まれます。

それなら ArrayList じゃなくて LinkedList でも変わらないのか、と言われると実はそうではなく、場合によってどちらがより適して来るのかが変わってきます。
こちらで別にまとめましたので気になる方は御覧ください。

上記の理由から、ArrayList 固有のメソッドが必要な場合のみ、

ArrayList<> arrayList = new ArrayList<>();

と宣言することが好ましいとされています。

List 型で宣言しておけば、後で必要になった時に ArrayList 以外の型も入れられる

後で機能拡張を行う可能性がある場合、出来るだけ拡張性を高めておくことがより好ましい場合があります。

List 型で宣言された変数には、必要であれば、ArrayList だけでなく、LinkedList といった他の List インターフェースを継承したオブジェクトを代入出来るようになるため拡張性が広がります。

参考

58
60
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?