List<Integer> list0 = new List1<Integer>();
a) 「リスト」という単語は Java のキーワードですか??
b) オブジェクトを作成するとき、クラスの名前は両側で同じであるべきではありませんか? 例えば:
Point x = new Point(1,2)
c) 次のコードは何を意味していますか?
List<Integer> list0 = new List1<Integer>();
List<Integer> list0 = new List1<Integer>();
a) 「リスト」という単語は Java のキーワードですか??
b) オブジェクトを作成するとき、クラスの名前は両側で同じであるべきではありませんか? 例えば:
Point x = new Point(1,2)
c) 次のコードは何を意味していますか?
List<Integer> list0 = new List1<Integer>();
a) いいえ、そうではありません。Interface
b) いつもではありません。右側のタイプは、割り当てられているタイプと互換性がある必要があります。同じか、サブタイプである必要があります。この場合、インターフェイスList1を実装する必要がありListます。
c)List1整数を保持する新しいインスタンスを作成します(「整数」は間違っています-「整数」でなければなりません); これは、クラスがインターフェイスをList1実装している場合にのみ有効です。Listは、コレクション (リスト) が保持できる型を制限<Integer>するジェネリック型です。
List1としてどこかで宣言する必要があります
public class List1<T> implements List<T> {
...
Listはインターフェイスであるため、 を実装 する任意のクラスのオブジェクトをListtype の変数に割り当てることができますList。
0) No.Listはインターフェイスの名前です。参照: http://docs.oracle.com/javase/6/docs/api/java/util/List.html
1)いいえ。Javaにはポリモーフィズムがあるため、実装されたインターフェイスまたは拡張クラスの名前でオブジェクトを呼び出すことができます
List は Java のインターフェースです。おそらくそれを ArrayList にインスタンス化する必要があります。
List list0 = new ArrayList();
C. もしかすると、
リスト l = 新しい ArrayList<>();
これは整数型のみを含むことができるリストです
Listはキーワードではなく、タイプ、具体的には Java インターフェースです。あなたの例のコードはコンパイルされません (List1クラスが次のように定義されていない限り: class List1 implements List { ... })、ただし、次のようなものです:
List<Integer> ls = new ArrayList<Integer>();
これにより、ArrayList保持できる が作成され、その参照が型として宣言されてIntegersいる変数に割り当てられます。 などの異なるタイプのリストへの参照を保持する可能性がありますが、それがある種のリストを指していることを保証できます(null でない限り)。したがって、インターフェイスで指定されたメソッドを使用できます。lsList<Integer>lsLinkedListlsList
変数の型は、割り当ての右側にあるオブジェクトの型と同じである必要はありませんが (多くの場合そうです)、オブジェクトは同じ型であるか、変数のサブクラス/実装である必要があります。タイプ。すべてのオブジェクトが拡張されるため、Objectいつでも次のようなことができます。
Object obj = new ArrayList<Integer>();
ただし、上記のように、 from にアクセスできる唯一のメソッドは、obj参照Objectされているオブジェクトが実際にはArrayList.