次のコードのようにリストを初期化できません。
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>
?
ベストアンサー1
チェックするとAPIなぜなら、List
次のように書かれていることに気づくでしょう。
Interface List<E>
であるということは、interface
インスタンス化できない (インスタンスnew List()
化できない) ことを意味します。
class
そのリンクを確認すると、以下を実装するいくつかの esが見つかりますList
。
既知のすべての実装クラス:
AbstractList
、、、、、、、、、、、、AbstractSequentialList
ArrayList
AttributeList
CopyOnWriteArrayList
LinkedList
RoleList
RoleUnresolvedList
Stack
Vector
それらのうちいくつかはインスタンス化できます ( として定義されていないものabstract class
)。リンクを使用してそれらについての詳細を調べ、たとえば、どれが自分のニーズに最も適しているかを調べます。
おそらく最もよく使用される 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
。