1

最近、理解を深めるために多くの Android プロジェクトのコードを読んでいます。私が目にすることの 1 つは、ArrayList がインスタンス化される 2 つの方法の違いです。

ここに示す 2 つの例に注意してください。なぜ一部の人は例 1 を使用し、なぜ例 2 よりもそれを使用するのですか?それらの主な違いは何ですか?

Java でのアップキャストとダウンキャストの概念を理解していますが、この特定の状況では何の利点もありません。arrayList を作成する場合は、最初から ArrayList 変数に格納しないでください。

新しい ArrayList を作成する例 2 の方法を常に使用してきました。例 1 に示されているものを使用する利点がわかりません

より多くのプログラマーが example 1 の方法を使用しているようです

例 1、親変数へのアップキャストの使用

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

例 2

  ArrayList<String> list = new ArrayList<String>();
4

1 に答える 1

1

Listインターフェイスであるため、インスタンス化できません..のような具体的な実装でインスタンス化する必要がありますArrayList

List使用するかArrayList完全に使用するかは、使用されるコンテキストによって異なります。

が必要なArrayList場合は、ArrayList でインスタンス化する必要があります。


アップキャストは通常​​、メソッドの再利用を目的として実行され、通常は自動的に実行されます。

リストをソートするためのこの方法を検討してください

public void sort(ArrayList lst);

このメソッドでのみ ArrayList を並べ替えることができます。そのため、LinkedList オブジェクトを並べ替える場合は、LinkedList パラメータを使用して別のメソッドを作成する必要があります。

今、この方法を検討してください

public void sort(List lst);

List インターフェイスを実装するクラスのオブジェクトを渡すことで、このメソッドを再利用できるようになりました。したがって、この同じメソッドを使用して、、、、を並べ替えることができます。ArrayListしたがってLinkedListStackこのVector同じメソッドを再利用して、List インターフェイスを実装するさまざまなクラスを並べ替えることができます。

于 2013-07-09T04:05:48.047 に答える