478

次のコードのようにリストを初期化できません。

List<String> supplierNames = new List<String>();
supplierNames.add("sup1");
supplierNames.add("sup2");
supplierNames.add("sup3");
System.out.println(supplierNames.get(1));

次のエラーが発生します。

タイプをインスタンス化できませんList<String>

どうすればインスタンス化できますList<String>か?

4

13 に答える 13

829

APIを確認すると、次のListように表示されます。

Interface List<E>

であるinterfaceことは、インスタンス化できないことを意味します (new List()不可能です)。

そのリンクを確認するとclass、実装する es がいくつか見つかりListます。

すべての既知の実装クラス:

AbstractListAbstractSequentialListArrayListAttributeListCopyOnWriteArrayListLinkedListRoleListRoleUnresolvedList_ Stack_Vector

それらの一部はインスタンス化できます ( として定義されていないものabstract class)。それらのリンクを使用して、それらについて詳しく知ることができます.IE: どちらがニーズに適しているかを知る.

最も一般的に使用されているのは、おそらく次の 3 つです。

 List<String> supplierNames1 = new ArrayList<String>();
 List<String> supplierNames2 = new LinkedList<String>();
 List<String> supplierNames3 = new Vector<String>();

おまけ:次のよう
に、を使用して、より簡単な方法で値を使用してインスタンス化することもできます。Arrays class

List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));

ただし、そのリストに要素を追加することは許可されていないことに注意してくださいfixed-size

于 2012-11-15T10:07:41.863 に答える
41

List はInterfaceです。インターフェイスをインスタンス化することはできません。インターフェイスは規則であるため、どのメソッドにクラスを持たせる必要があるかです。インスタンス化するには、そのインターフェイスのいくつかの実現 (実装) が必要です。List インターフェイスの非常に一般的な実装で以下のコードを試してください。

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

また

List<String> supplierNames = new LinkedList<String>();
于 2012-11-15T10:02:43.027 に答える
16

ArrayList<String>などを使用する必要があります。

List<String>インターフェースです。

これを使って:

import java.util.ArrayList;

...

List<String> supplierNames = new ArrayList<String>();
于 2012-11-15T10:02:02.343 に答える
13

List はインターフェイスであり、インターフェイスを初期化することはできません。代わりに実装クラスをインスタンス化してください。

お気に入り:

List<String> abc = new ArrayList<String>();
List<String> xyz = new LinkedList<String>();
于 2012-11-15T10:02:16.523 に答える
11

ほとんどの場合、シンプルにしたいArrayList- の実装List

JDK バージョン 7 より前

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

JDK 7 以降では、ダイヤモンド演算子を使用できます

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

詳細情報は、ここに書かれています Oracle ドキュメント - コレクション

于 2015-10-04T09:05:50.843 に答える
9

リストは単なるインターフェースであり、一般的なリストの定義です。このリスト インターフェイスの実装を提供する必要があります。最も一般的なのは次の 2 つです。

ArrayList - 配列上に実装されたリスト

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

LinkedList - 要素の相互接続チェーンのように実装されたリスト

List<String> supplierNames = new LinkedList<String>();
于 2012-11-15T10:06:59.253 に答える
7

使用するリストの種類に応じて、次のようなもの

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

あなたが行く必要があります。

List はインターフェースであり、ArrayList は List インターフェースの 1 つの実装です。List インターフェイスの JavaDocs を読むと、ニーズにより適したその他の実装を見つけることができます。

于 2012-11-15T10:03:00.153 に答える
5

List は Interface です。List を使用して初期化することはできません。

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

これらは List 実装クラスの一部です。

ArrayList, LinkedList, Vector

要件に応じて、これのいずれかを使用できます。これらの各クラスには独自の機能があります。

于 2012-11-15T10:03:21.167 に答える