LinkedList固有のメソッドを使用したい場合はLinkedListで宣言すること

LinkedList固有のメソッドを使用したい場合はLinkedListで宣言すること

ArrayListやLinkedListを宣言するときは以下のように宣言します。

List<String> list = new LinkedList<String>();

一般的にはListインタフェースで宣言します。多分それでよいはずですが、ListはインタフェースなのでArrayListやLinkedListの最低限の仕様が記述されているだけです。

LinkedListもArrayListもListの仕様は満たすものの、それぞれ固有のメソッドがあるので、この書き方は必ずしも正解とは言えないです。

例えば、キューなどでLinkedListを使用したい場合はLinkedList固有のメソッドを使用したい場合があるため以下のように宣言する必要があります。

LinkedList<String> list = new LinkedList<String>();

これでlistインスタンスはaddFirstやaddLast、offerやpeekメソッドが使えるようになります。

Listはあくまでも最低限のインタフェース(仕様)なのでLinkedList固有のメソッドは持っていません。前者の宣言方法だとofferメソッドは使えません。この点、理解しておくことが大事です。

Listインタフェースをimplementsするクラスの宣言方法については

List<String> list = new LinkedList<String>();

が必ずしも正解で

LinkedList<String> list = new LinkedList<String>();

が必ずしも間違った書き方ではなくて、その時々の用途によって宣言方法は使い分けるのが正解だと思います。

コメント

タイトルとURLをコピーしました