43

ArrayListの型を宣言したいint

以下でエラーが発生するのはなぜですか。

ArrayList<int> list1 = new ArrayList<int>();

しかし、次の作品:

ArrayList<Integer> list1 = new ArrayList<Integer>();

?

4

7 に答える 7

39

ArrayList型のみを参照でき、プリミティブは参照できません。Integerプリミティブではなくクラスです。

を宣言すると、プリミティブではなく型を格納するArrayList<Integer> list1 = new ArrayList<Integer>()が作成されます。ArrayListIntegerint

プリミティブ型と参照型の違いについて知りたい場合は、http://pages.cs.wisc.edu/~hasti/cs302/examples/primitiveVsRef.htmlをチェックしてください。

于 2013-01-15T23:46:14.310 に答える
13

プリミティブ型intなので。ジェネリック パラメーターとして使用できるのは、参照型のみです。

于 2013-01-15T23:43:27.283 に答える
11

簡単に言うと、ジェネリックス(のようなArrayList<Integer>)はプリミティブ型(int)を受け入れず、オブジェクト(Integer)のみを受け入れます。

これは、のようなクラスArrayListがオブジェクトを使用して実装されているためです。すべてのクラスはObjectを継承するため、コンパイラは他のクラスをプラグインするだけで済みます。ただし、プリミティブ型(のようなint)はクラスではないため、Objectから継承しません。そこで、Sun/OracleはIntegerこれを支援するクラスを作成しました。

つまり、要するに:intではありませんObject

于 2013-01-16T00:09:40.570 に答える
0

int はプリミティブ データ型ですが、Integer はクラスであるため、arrayList 配列はプリミティブ型ではなく参照型のみをパラメーターとして使用できます。

于 2015-04-01T15:18:52.957 に答える
0

intですprimitive。ではありませんObject

詳細については、このリンクを参照してください。

于 2013-01-15T23:45:10.987 に答える