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
はインターフェイスであるため、 を実装 する任意のクラスのオブジェクトをList
type の変数に割り当てることができます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 でない限り)。したがって、インターフェイスで指定されたメソッドを使用できます。ls
List<Integer>
ls
LinkedList
ls
List
変数の型は、割り当ての右側にあるオブジェクトの型と同じである必要はありませんが (多くの場合そうです)、オブジェクトは同じ型であるか、変数のサブクラス/実装である必要があります。タイプ。すべてのオブジェクトが拡張されるため、Object
いつでも次のようなことができます。
Object obj = new ArrayList<Integer>();
ただし、上記のように、 from にアクセスできる唯一のメソッドは、obj
参照Object
されているオブジェクトが実際にはArrayList
.